packages feed

hydra-java 0.17.7 → 0.18.0

raw patch · 18 files changed

+25707/−25619 lines, 18 filesdep ~hydra-jvmdep ~hydra-kernelPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hydra-jvm, hydra-kernel

API changes (from Hackage documentation)

- Hydra.Dsl.Java.Environment: aliases :: TypedTerm ModuleName -> TypedTerm (Map ModuleName PackageName) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Map Name Name) -> TypedTerm (Set Name) -> TypedTerm (Map Name Name) -> TypedTerm (Set Name) -> TypedTerm (Maybe Type) -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesAliases :: TypedName Aliases
- Hydra.Dsl.Java.Environment: aliasesBranchVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesCurrentNamespace :: TypedTerm Aliases -> TypedTerm ModuleName
- Hydra.Dsl.Java.Environment: aliasesInScopeJavaVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesInScopeTypeParams :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesLambdaVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesMethodCodomain :: TypedTerm Aliases -> TypedTerm (Maybe Type)
- Hydra.Dsl.Java.Environment: aliasesPackages :: TypedTerm Aliases -> TypedTerm (Map ModuleName PackageName)
- Hydra.Dsl.Java.Environment: aliasesPolymorphicLocals :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesRecursiveVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesThunkedVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesTrustedTypeVars :: TypedTerm Aliases -> TypedTerm (Set Name)
- Hydra.Dsl.Java.Environment: aliasesTypeVarSubst :: TypedTerm Aliases -> TypedTerm (Map Name Name)
- Hydra.Dsl.Java.Environment: aliasesVarRenames :: TypedTerm Aliases -> TypedTerm (Map Name Name)
- Hydra.Dsl.Java.Environment: aliasesWithBranchVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithCurrentNamespace :: TypedTerm Aliases -> TypedTerm ModuleName -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithInScopeJavaVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithInScopeTypeParams :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithLambdaVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithMethodCodomain :: TypedTerm Aliases -> TypedTerm (Maybe Type) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithPackages :: TypedTerm Aliases -> TypedTerm (Map ModuleName PackageName) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithPolymorphicLocals :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithRecursiveVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithThunkedVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithTrustedTypeVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithTypeVarSubst :: TypedTerm Aliases -> TypedTerm (Map Name Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: aliasesWithVarRenames :: TypedTerm Aliases -> TypedTerm (Map Name Name) -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: javaEnvironment :: TypedTerm Aliases -> TypedTerm Graph -> TypedTerm JavaEnvironment
- Hydra.Dsl.Java.Environment: javaEnvironmentAliases :: TypedTerm JavaEnvironment -> TypedTerm Aliases
- Hydra.Dsl.Java.Environment: javaEnvironmentGraph :: TypedTerm JavaEnvironment -> TypedTerm Graph
- Hydra.Dsl.Java.Environment: javaEnvironmentJavaEnvironment :: TypedName JavaEnvironment
- Hydra.Dsl.Java.Environment: javaEnvironmentWithAliases :: TypedTerm JavaEnvironment -> TypedTerm Aliases -> TypedTerm JavaEnvironment
- Hydra.Dsl.Java.Environment: javaEnvironmentWithGraph :: TypedTerm JavaEnvironment -> TypedTerm Graph -> TypedTerm JavaEnvironment
- Hydra.Dsl.Java.Environment: javaFeatures :: TypedTerm Bool -> TypedTerm JavaFeatures
- Hydra.Dsl.Java.Environment: javaFeaturesJavaFeatures :: TypedName JavaFeatures
- Hydra.Dsl.Java.Environment: javaFeaturesSupportsDiamondOperator :: TypedTerm JavaFeatures -> TypedTerm Bool
- Hydra.Dsl.Java.Environment: javaFeaturesWithSupportsDiamondOperator :: TypedTerm JavaFeatures -> TypedTerm Bool -> TypedTerm JavaFeatures
- Hydra.Dsl.Java.Environment: javaSymbolClassConstant :: TypedTerm JavaSymbolClass
- Hydra.Dsl.Java.Environment: javaSymbolClassHoistedLambda :: TypedTerm Int -> TypedTerm JavaSymbolClass
- Hydra.Dsl.Java.Environment: javaSymbolClassJavaSymbolClass :: TypedName JavaSymbolClass
- Hydra.Dsl.Java.Environment: javaSymbolClassLocalVariable :: TypedTerm JavaSymbolClass
- Hydra.Dsl.Java.Environment: javaSymbolClassNullaryFunction :: TypedTerm JavaSymbolClass
- Hydra.Dsl.Java.Environment: javaSymbolClassUnaryFunction :: TypedTerm JavaSymbolClass
- Hydra.Dsl.Java.Language: javaLanguage :: TypedTerm Language
- Hydra.Dsl.Java.Language: javaMaxTupleLength :: TypedTerm Int
- Hydra.Dsl.Java.Language: reservedWords :: TypedTerm (Set String)
- Hydra.Dsl.Java.Syntax: additionalBound :: TypedTerm InterfaceType -> TypedTerm AdditionalBound
- Hydra.Dsl.Java.Syntax: additionalBoundAdditionalBound :: TypedName AdditionalBound
- Hydra.Dsl.Java.Syntax: additiveExpressionAdditiveExpression :: TypedName AdditiveExpression
- Hydra.Dsl.Java.Syntax: additiveExpressionMinus :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
- Hydra.Dsl.Java.Syntax: additiveExpressionPlus :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
- Hydra.Dsl.Java.Syntax: additiveExpressionUnary :: TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression
- Hydra.Dsl.Java.Syntax: additiveExpression_Binary :: TypedTerm AdditiveExpression -> TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression_Binary
- Hydra.Dsl.Java.Syntax: additiveExpression_BinaryAdditiveExpression_Binary :: TypedName AdditiveExpression_Binary
- Hydra.Dsl.Java.Syntax: additiveExpression_BinaryLhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
- Hydra.Dsl.Java.Syntax: additiveExpression_BinaryRhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: additiveExpression_BinaryWithLhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression -> TypedTerm AdditiveExpression_Binary
- Hydra.Dsl.Java.Syntax: additiveExpression_BinaryWithRhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression_Binary
- Hydra.Dsl.Java.Syntax: ambiguousName :: TypedTerm [Identifier] -> TypedTerm AmbiguousName
- Hydra.Dsl.Java.Syntax: ambiguousNameAmbiguousName :: TypedName AmbiguousName
- Hydra.Dsl.Java.Syntax: andExpression :: TypedTerm [EqualityExpression] -> TypedTerm AndExpression
- Hydra.Dsl.Java.Syntax: andExpressionAndExpression :: TypedName AndExpression
- Hydra.Dsl.Java.Syntax: annotatedIdentifier :: TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm AnnotatedIdentifier
- Hydra.Dsl.Java.Syntax: annotatedIdentifierAnnotatedIdentifier :: TypedName AnnotatedIdentifier
- Hydra.Dsl.Java.Syntax: annotatedIdentifierAnnotations :: TypedTerm AnnotatedIdentifier -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: annotatedIdentifierIdentifier :: TypedTerm AnnotatedIdentifier -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: annotatedIdentifierWithAnnotations :: TypedTerm AnnotatedIdentifier -> TypedTerm [Annotation] -> TypedTerm AnnotatedIdentifier
- Hydra.Dsl.Java.Syntax: annotatedIdentifierWithIdentifier :: TypedTerm AnnotatedIdentifier -> TypedTerm Identifier -> TypedTerm AnnotatedIdentifier
- Hydra.Dsl.Java.Syntax: annotationAnnotation :: TypedName Annotation
- Hydra.Dsl.Java.Syntax: annotationInterfaceBody :: TypedTerm [AnnotationInterfaceMemberDeclaration] -> TypedTerm AnnotationInterfaceBody
- Hydra.Dsl.Java.Syntax: annotationInterfaceBodyAnnotationInterfaceBody :: TypedName AnnotationInterfaceBody
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclaration :: TypedTerm [InterfaceModifier] -> TypedTerm TypeIdentifier -> TypedTerm AnnotationInterfaceBody -> TypedTerm AnnotationInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationAnnotationInterfaceDeclaration :: TypedName AnnotationInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationBody :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm AnnotationInterfaceBody
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationIdentifier :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationModifiers :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm [InterfaceModifier]
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationWithBody :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm AnnotationInterfaceBody -> TypedTerm AnnotationInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationWithIdentifier :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm TypeIdentifier -> TypedTerm AnnotationInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceDeclarationWithModifiers :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm [InterfaceModifier] -> TypedTerm AnnotationInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclaration :: TypedTerm [AnnotationInterfaceElementModifier] -> TypedTerm UnannType -> TypedTerm Identifier -> TypedTerm (Maybe Dims) -> TypedTerm (Maybe DefaultValue) -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration :: TypedName AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationDefault :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe DefaultValue)
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationDims :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe Dims)
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationIdentifier :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationModifiers :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm [AnnotationInterfaceElementModifier]
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationType :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationWithDefault :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe DefaultValue) -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationWithDims :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe Dims) -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationWithIdentifier :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm Identifier -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationWithModifiers :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm [AnnotationInterfaceElementModifier] -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementDeclarationWithType :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm UnannType -> TypedTerm AnnotationInterfaceElementDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementModifierAbstract :: TypedTerm AnnotationInterfaceElementModifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementModifierAnnotation :: TypedTerm Annotation -> TypedTerm AnnotationInterfaceElementModifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementModifierAnnotationInterfaceElementModifier :: TypedName AnnotationInterfaceElementModifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceElementModifierPublic :: TypedTerm AnnotationInterfaceElementModifier
- Hydra.Dsl.Java.Syntax: annotationInterfaceMemberDeclarationAnnotationInterface :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration :: TypedName AnnotationInterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceMemberDeclarationConstant :: TypedTerm ConstantDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: annotationInterfaceMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: annotationMarker :: TypedTerm MarkerAnnotation -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: annotationNormal :: TypedTerm NormalAnnotation -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: annotationSingleElement :: TypedTerm SingleElementAnnotation -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: arrayAccess :: TypedTerm (Maybe Expression) -> TypedTerm ArrayAccess_Variant -> TypedTerm ArrayAccess
- Hydra.Dsl.Java.Syntax: arrayAccessArrayAccess :: TypedName ArrayAccess
- Hydra.Dsl.Java.Syntax: arrayAccessExpression :: TypedTerm ArrayAccess -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: arrayAccessVariant :: TypedTerm ArrayAccess -> TypedTerm ArrayAccess_Variant
- Hydra.Dsl.Java.Syntax: arrayAccessWithExpression :: TypedTerm ArrayAccess -> TypedTerm (Maybe Expression) -> TypedTerm ArrayAccess
- Hydra.Dsl.Java.Syntax: arrayAccessWithVariant :: TypedTerm ArrayAccess -> TypedTerm ArrayAccess_Variant -> TypedTerm ArrayAccess
- Hydra.Dsl.Java.Syntax: arrayAccess_VariantArrayAccess_Variant :: TypedName ArrayAccess_Variant
- Hydra.Dsl.Java.Syntax: arrayAccess_VariantArrayCreationWithInitializer :: TypedTerm ArrayCreationExpressionWithInitializer -> TypedTerm ArrayAccess_Variant
- Hydra.Dsl.Java.Syntax: arrayAccess_VariantName :: TypedTerm ExpressionName -> TypedTerm ArrayAccess_Variant
- Hydra.Dsl.Java.Syntax: arrayAccess_VariantPrimary :: TypedTerm PrimaryNoNewArrayExpression -> TypedTerm ArrayAccess_Variant
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionArrayCreationExpression :: TypedName ArrayCreationExpression
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionNoInit :: TypedTerm ArrayCreationExpressionWithoutInitializer -> TypedTerm ArrayCreationExpression
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInit :: TypedTerm ArrayCreationExpressionWithInitializer -> TypedTerm ArrayCreationExpression
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer :: TypedName ArrayCreationExpressionWithInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializerClassOrInterface :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayCreationExpressionWithInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializerPrimitive :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayCreationExpressionWithInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [Dims] -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface :: TypedName ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm [Dims]
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm [Dims] -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Dims] -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveArray :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive :: TypedName ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveDims :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm [Dims]
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveType :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithArray :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithDims :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm [Dims] -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithType :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer :: TypedName ArrayCreationExpressionWithoutInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializerClassOrInterface :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ArrayCreationExpressionWithoutInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializerPrimitive :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm ArrayCreationExpressionWithoutInitializer
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [DimExpr] -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface :: TypedName ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm [DimExpr]
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm (Maybe Dims)
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm [DimExpr] -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [DimExpr] -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive :: TypedName ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm [DimExpr]
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm (Maybe Dims)
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveType :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm [DimExpr] -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithType :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Dsl.Java.Syntax: arrayInitializer :: TypedTerm [[VariableInitializer]] -> TypedTerm ArrayInitializer
- Hydra.Dsl.Java.Syntax: arrayInitializerArrayInitializer :: TypedName ArrayInitializer
- Hydra.Dsl.Java.Syntax: arrayType :: TypedTerm Dims -> TypedTerm ArrayType_Variant -> TypedTerm ArrayType
- Hydra.Dsl.Java.Syntax: arrayTypeArrayType :: TypedName ArrayType
- Hydra.Dsl.Java.Syntax: arrayTypeDims :: TypedTerm ArrayType -> TypedTerm Dims
- Hydra.Dsl.Java.Syntax: arrayTypeVariant :: TypedTerm ArrayType -> TypedTerm ArrayType_Variant
- Hydra.Dsl.Java.Syntax: arrayTypeWithDims :: TypedTerm ArrayType -> TypedTerm Dims -> TypedTerm ArrayType
- Hydra.Dsl.Java.Syntax: arrayTypeWithVariant :: TypedTerm ArrayType -> TypedTerm ArrayType_Variant -> TypedTerm ArrayType
- Hydra.Dsl.Java.Syntax: arrayType_VariantArrayType_Variant :: TypedName ArrayType_Variant
- Hydra.Dsl.Java.Syntax: arrayType_VariantClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm ArrayType_Variant
- Hydra.Dsl.Java.Syntax: arrayType_VariantPrimitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayType_Variant
- Hydra.Dsl.Java.Syntax: arrayType_VariantVariable :: TypedTerm TypeVariable -> TypedTerm ArrayType_Variant
- Hydra.Dsl.Java.Syntax: assertStatementAssertStatement :: TypedName AssertStatement
- Hydra.Dsl.Java.Syntax: assertStatementPair :: TypedTerm AssertStatement_Pair -> TypedTerm AssertStatement
- Hydra.Dsl.Java.Syntax: assertStatementSingle :: TypedTerm Expression -> TypedTerm AssertStatement
- Hydra.Dsl.Java.Syntax: assertStatement_Pair :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
- Hydra.Dsl.Java.Syntax: assertStatement_PairAssertStatement_Pair :: TypedName AssertStatement_Pair
- Hydra.Dsl.Java.Syntax: assertStatement_PairFirst :: TypedTerm AssertStatement_Pair -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: assertStatement_PairSecond :: TypedTerm AssertStatement_Pair -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: assertStatement_PairWithFirst :: TypedTerm AssertStatement_Pair -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
- Hydra.Dsl.Java.Syntax: assertStatement_PairWithSecond :: TypedTerm AssertStatement_Pair -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
- Hydra.Dsl.Java.Syntax: assignment :: TypedTerm LeftHandSide -> TypedTerm AssignmentOperator -> TypedTerm Expression -> TypedTerm Assignment
- Hydra.Dsl.Java.Syntax: assignmentAssignment :: TypedName Assignment
- Hydra.Dsl.Java.Syntax: assignmentExpression :: TypedTerm Assignment -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: assignmentExpressionAssignment :: TypedTerm Assignment -> TypedTerm AssignmentExpression
- Hydra.Dsl.Java.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
- Hydra.Dsl.Java.Syntax: assignmentExpressionConditional :: TypedTerm ConditionalExpression -> TypedTerm AssignmentExpression
- Hydra.Dsl.Java.Syntax: assignmentLhs :: TypedTerm Assignment -> TypedTerm LeftHandSide
- Hydra.Dsl.Java.Syntax: assignmentOp :: TypedTerm Assignment -> TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorAnd :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorDiv :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorMinus :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorMod :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorOr :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorPlus :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorShiftLeft :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorShiftRight :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorShiftRightZeroFill :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorSimple :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorTimes :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentOperatorXor :: TypedTerm AssignmentOperator
- Hydra.Dsl.Java.Syntax: assignmentWithExpression :: TypedTerm Assignment -> TypedTerm Expression -> TypedTerm Assignment
- Hydra.Dsl.Java.Syntax: assignmentWithLhs :: TypedTerm Assignment -> TypedTerm LeftHandSide -> TypedTerm Assignment
- Hydra.Dsl.Java.Syntax: assignmentWithOp :: TypedTerm Assignment -> TypedTerm AssignmentOperator -> TypedTerm Assignment
- Hydra.Dsl.Java.Syntax: basicForStatement :: TypedTerm ForCond -> TypedTerm Statement -> TypedTerm BasicForStatement
- Hydra.Dsl.Java.Syntax: basicForStatementBasicForStatement :: TypedName BasicForStatement
- Hydra.Dsl.Java.Syntax: basicForStatementBody :: TypedTerm BasicForStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: basicForStatementCond :: TypedTerm BasicForStatement -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIf :: TypedTerm ForCond -> TypedTerm StatementNoShortIf -> TypedTerm BasicForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIfBasicForStatementNoShortIf :: TypedName BasicForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIfBody :: TypedTerm BasicForStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIfCond :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIfWithBody :: TypedTerm BasicForStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm BasicForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: basicForStatementNoShortIfWithCond :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForCond -> TypedTerm BasicForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: basicForStatementWithBody :: TypedTerm BasicForStatement -> TypedTerm Statement -> TypedTerm BasicForStatement
- Hydra.Dsl.Java.Syntax: basicForStatementWithCond :: TypedTerm BasicForStatement -> TypedTerm ForCond -> TypedTerm BasicForStatement
- Hydra.Dsl.Java.Syntax: block :: TypedTerm [BlockStatement] -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: blockBlock :: TypedName Block
- Hydra.Dsl.Java.Syntax: blockStatementBlockStatement :: TypedName BlockStatement
- Hydra.Dsl.Java.Syntax: blockStatementLocalClassOrInterface :: TypedTerm LocalClassOrInterfaceDeclaration -> TypedTerm BlockStatement
- Hydra.Dsl.Java.Syntax: blockStatementLocalVariableDeclaration :: TypedTerm LocalVariableDeclarationStatement -> TypedTerm BlockStatement
- Hydra.Dsl.Java.Syntax: blockStatementStatement :: TypedTerm Statement -> TypedTerm BlockStatement
- Hydra.Dsl.Java.Syntax: booleanArrayArray :: TypedTerm BooleanArray -> TypedTerm BooleanArray
- Hydra.Dsl.Java.Syntax: booleanArrayBooleanArray :: TypedName BooleanArray
- Hydra.Dsl.Java.Syntax: booleanArraySimple :: TypedTerm BooleanArray
- Hydra.Dsl.Java.Syntax: breakStatement :: TypedTerm (Maybe Identifier) -> TypedTerm BreakStatement
- Hydra.Dsl.Java.Syntax: breakStatementBreakStatement :: TypedName BreakStatement
- Hydra.Dsl.Java.Syntax: caseConstant :: TypedTerm ConditionalExpression -> TypedTerm CaseConstant
- Hydra.Dsl.Java.Syntax: caseConstantCaseConstant :: TypedName CaseConstant
- Hydra.Dsl.Java.Syntax: casePattern :: TypedTerm Pattern -> TypedTerm (Maybe Guard) -> TypedTerm CasePattern
- Hydra.Dsl.Java.Syntax: casePatternCasePattern :: TypedName CasePattern
- Hydra.Dsl.Java.Syntax: casePatternGuard :: TypedTerm CasePattern -> TypedTerm (Maybe Guard)
- Hydra.Dsl.Java.Syntax: casePatternPattern :: TypedTerm CasePattern -> TypedTerm Pattern
- Hydra.Dsl.Java.Syntax: casePatternWithGuard :: TypedTerm CasePattern -> TypedTerm (Maybe Guard) -> TypedTerm CasePattern
- Hydra.Dsl.Java.Syntax: casePatternWithPattern :: TypedTerm CasePattern -> TypedTerm Pattern -> TypedTerm CasePattern
- Hydra.Dsl.Java.Syntax: castExpressionCastExpression :: TypedName CastExpression
- Hydra.Dsl.Java.Syntax: castExpressionLambda :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression
- Hydra.Dsl.Java.Syntax: castExpressionNotPlusMinus :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression
- Hydra.Dsl.Java.Syntax: castExpressionPrimitive :: TypedTerm CastExpression_Primitive -> TypedTerm CastExpression
- Hydra.Dsl.Java.Syntax: castExpression_Lambda :: TypedTerm CastExpression_RefAndBounds -> TypedTerm LambdaExpression -> TypedTerm CastExpression_Lambda
- Hydra.Dsl.Java.Syntax: castExpression_LambdaCastExpression_Lambda :: TypedName CastExpression_Lambda
- Hydra.Dsl.Java.Syntax: castExpression_LambdaExpression :: TypedTerm CastExpression_Lambda -> TypedTerm LambdaExpression
- Hydra.Dsl.Java.Syntax: castExpression_LambdaRefAndBounds :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: castExpression_LambdaWithExpression :: TypedTerm CastExpression_Lambda -> TypedTerm LambdaExpression -> TypedTerm CastExpression_Lambda
- Hydra.Dsl.Java.Syntax: castExpression_LambdaWithRefAndBounds :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression_RefAndBounds -> TypedTerm CastExpression_Lambda
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinus :: TypedTerm CastExpression_RefAndBounds -> TypedTerm UnaryExpression -> TypedTerm CastExpression_NotPlusMinus
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinusCastExpression_NotPlusMinus :: TypedName CastExpression_NotPlusMinus
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinusExpression :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinusRefAndBounds :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinusWithExpression :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm UnaryExpression -> TypedTerm CastExpression_NotPlusMinus
- Hydra.Dsl.Java.Syntax: castExpression_NotPlusMinusWithRefAndBounds :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression_RefAndBounds -> TypedTerm CastExpression_NotPlusMinus
- Hydra.Dsl.Java.Syntax: castExpression_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm UnaryExpression -> TypedTerm CastExpression_Primitive
- Hydra.Dsl.Java.Syntax: castExpression_PrimitiveCastExpression_Primitive :: TypedName CastExpression_Primitive
- Hydra.Dsl.Java.Syntax: castExpression_PrimitiveExpression :: TypedTerm CastExpression_Primitive -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: castExpression_PrimitiveType :: TypedTerm CastExpression_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: castExpression_PrimitiveWithExpression :: TypedTerm CastExpression_Primitive -> TypedTerm UnaryExpression -> TypedTerm CastExpression_Primitive
- Hydra.Dsl.Java.Syntax: castExpression_PrimitiveWithType :: TypedTerm CastExpression_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm CastExpression_Primitive
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBounds :: TypedTerm ReferenceType -> TypedTerm [AdditionalBound] -> TypedTerm CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBoundsBounds :: TypedTerm CastExpression_RefAndBounds -> TypedTerm [AdditionalBound]
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBoundsCastExpression_RefAndBounds :: TypedName CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBoundsType :: TypedTerm CastExpression_RefAndBounds -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBoundsWithBounds :: TypedTerm CastExpression_RefAndBounds -> TypedTerm [AdditionalBound] -> TypedTerm CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: castExpression_RefAndBoundsWithType :: TypedTerm CastExpression_RefAndBounds -> TypedTerm ReferenceType -> TypedTerm CastExpression_RefAndBounds
- Hydra.Dsl.Java.Syntax: catchClause :: TypedTerm (Maybe CatchFormalParameter) -> TypedTerm Block -> TypedTerm CatchClause
- Hydra.Dsl.Java.Syntax: catchClauseBlock :: TypedTerm CatchClause -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: catchClauseCatchClause :: TypedName CatchClause
- Hydra.Dsl.Java.Syntax: catchClauseParameter :: TypedTerm CatchClause -> TypedTerm (Maybe CatchFormalParameter)
- Hydra.Dsl.Java.Syntax: catchClauseWithBlock :: TypedTerm CatchClause -> TypedTerm Block -> TypedTerm CatchClause
- Hydra.Dsl.Java.Syntax: catchClauseWithParameter :: TypedTerm CatchClause -> TypedTerm (Maybe CatchFormalParameter) -> TypedTerm CatchClause
- Hydra.Dsl.Java.Syntax: catchFormalParameter :: TypedTerm [VariableModifier] -> TypedTerm CatchType -> TypedTerm VariableDeclaratorId -> TypedTerm CatchFormalParameter
- Hydra.Dsl.Java.Syntax: catchFormalParameterCatchFormalParameter :: TypedName CatchFormalParameter
- Hydra.Dsl.Java.Syntax: catchFormalParameterId :: TypedTerm CatchFormalParameter -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: catchFormalParameterModifiers :: TypedTerm CatchFormalParameter -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: catchFormalParameterType :: TypedTerm CatchFormalParameter -> TypedTerm CatchType
- Hydra.Dsl.Java.Syntax: catchFormalParameterWithId :: TypedTerm CatchFormalParameter -> TypedTerm VariableDeclaratorId -> TypedTerm CatchFormalParameter
- Hydra.Dsl.Java.Syntax: catchFormalParameterWithModifiers :: TypedTerm CatchFormalParameter -> TypedTerm [VariableModifier] -> TypedTerm CatchFormalParameter
- Hydra.Dsl.Java.Syntax: catchFormalParameterWithType :: TypedTerm CatchFormalParameter -> TypedTerm CatchType -> TypedTerm CatchFormalParameter
- Hydra.Dsl.Java.Syntax: catchType :: TypedTerm UnannClassType -> TypedTerm [ClassType] -> TypedTerm CatchType
- Hydra.Dsl.Java.Syntax: catchTypeCatchType :: TypedName CatchType
- Hydra.Dsl.Java.Syntax: catchTypeType :: TypedTerm CatchType -> TypedTerm UnannClassType
- Hydra.Dsl.Java.Syntax: catchTypeTypes :: TypedTerm CatchType -> TypedTerm [ClassType]
- Hydra.Dsl.Java.Syntax: catchTypeWithType :: TypedTerm CatchType -> TypedTerm UnannClassType -> TypedTerm CatchType
- Hydra.Dsl.Java.Syntax: catchTypeWithTypes :: TypedTerm CatchType -> TypedTerm [ClassType] -> TypedTerm CatchType
- Hydra.Dsl.Java.Syntax: catches :: TypedTerm [CatchClause] -> TypedTerm Catches
- Hydra.Dsl.Java.Syntax: catchesCatches :: TypedName Catches
- Hydra.Dsl.Java.Syntax: classBody :: TypedTerm [ClassBodyDeclarationWithComments] -> TypedTerm ClassBody
- Hydra.Dsl.Java.Syntax: classBodyClassBody :: TypedName ClassBody
- Hydra.Dsl.Java.Syntax: classBodyDeclarationClassBodyDeclaration :: TypedName ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationClassMember :: TypedTerm ClassMemberDeclaration -> TypedTerm ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationConstructorDeclaration :: TypedTerm ConstructorDeclaration -> TypedTerm ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationInstanceInitializer :: TypedTerm InstanceInitializer -> TypedTerm ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationStaticInitializer :: TypedTerm StaticInitializer -> TypedTerm ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithComments :: TypedTerm ClassBodyDeclaration -> TypedTerm (Maybe String) -> TypedTerm ClassBodyDeclarationWithComments
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithCommentsClassBodyDeclarationWithComments :: TypedName ClassBodyDeclarationWithComments
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithCommentsComments :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm (Maybe String)
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithCommentsValue :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm ClassBodyDeclaration
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithCommentsWithComments :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm ClassBodyDeclarationWithComments
- Hydra.Dsl.Java.Syntax: classBodyDeclarationWithCommentsWithValue :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm ClassBodyDeclaration -> TypedTerm ClassBodyDeclarationWithComments
- Hydra.Dsl.Java.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
- Hydra.Dsl.Java.Syntax: classDeclarationEnum :: TypedTerm EnumDeclaration -> TypedTerm ClassDeclaration
- Hydra.Dsl.Java.Syntax: classDeclarationNormal :: TypedTerm NormalClassDeclaration -> TypedTerm ClassDeclaration
- Hydra.Dsl.Java.Syntax: classDeclarationRecord :: TypedTerm RecordDeclaration -> TypedTerm ClassDeclaration
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpression :: TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier) -> TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpressionClassInstanceCreationExpression :: TypedName ClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpressionExpression :: TypedTerm ClassInstanceCreationExpression -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpressionQualifier :: TypedTerm ClassInstanceCreationExpression -> TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier)
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpressionWithExpression :: TypedTerm ClassInstanceCreationExpression -> TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpressionWithQualifier :: TypedTerm ClassInstanceCreationExpression -> TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier) -> TypedTerm ClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier :: TypedName ClassInstanceCreationExpression_Qualifier
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpression_QualifierExpression :: TypedTerm ExpressionName -> TypedTerm ClassInstanceCreationExpression_Qualifier
- Hydra.Dsl.Java.Syntax: classInstanceCreationExpression_QualifierPrimary :: TypedTerm Primary -> TypedTerm ClassInstanceCreationExpression_Qualifier
- Hydra.Dsl.Java.Syntax: classLiteralBoolean :: TypedTerm BooleanArray -> TypedTerm ClassLiteral
- Hydra.Dsl.Java.Syntax: classLiteralClassLiteral :: TypedName ClassLiteral
- Hydra.Dsl.Java.Syntax: classLiteralNumericType :: TypedTerm NumericTypeArray -> TypedTerm ClassLiteral
- Hydra.Dsl.Java.Syntax: classLiteralType :: TypedTerm TypeNameArray -> TypedTerm ClassLiteral
- Hydra.Dsl.Java.Syntax: classLiteralVoid :: TypedTerm ClassLiteral
- Hydra.Dsl.Java.Syntax: classMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classMemberDeclarationClassMemberDeclaration :: TypedName ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classMemberDeclarationField :: TypedTerm FieldDeclaration -> TypedTerm ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classMemberDeclarationMethod :: TypedTerm MethodDeclaration -> TypedTerm ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classMemberDeclarationNone :: TypedTerm ClassMemberDeclaration
- Hydra.Dsl.Java.Syntax: classModifierAbstract :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierAnnotation :: TypedTerm Annotation -> TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierClassModifier :: TypedName ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierFinal :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierNonSealed :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierPrivate :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierProtected :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierPublic :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierSealed :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierStatic :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classModifierStrictfp :: TypedTerm ClassModifier
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeClass :: TypedTerm ClassType -> TypedTerm ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeClassOrInterfaceType :: TypedName ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeInterface :: TypedTerm InterfaceType -> TypedTerm ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiate :: TypedTerm [AnnotatedIdentifier] -> TypedTerm (Maybe TypeArgumentsOrDiamond) -> TypedTerm ClassOrInterfaceTypeToInstantiate
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate :: TypedName ClassOrInterfaceTypeToInstantiate
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiateIdentifiers :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [AnnotatedIdentifier]
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiateTypeArguments :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm (Maybe TypeArgumentsOrDiamond)
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiateWithIdentifiers :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [AnnotatedIdentifier] -> TypedTerm ClassOrInterfaceTypeToInstantiate
- Hydra.Dsl.Java.Syntax: classOrInterfaceTypeToInstantiateWithTypeArguments :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm (Maybe TypeArgumentsOrDiamond) -> TypedTerm ClassOrInterfaceTypeToInstantiate
- Hydra.Dsl.Java.Syntax: classType :: TypedTerm [Annotation] -> TypedTerm ClassTypeQualifier -> TypedTerm TypeIdentifier -> TypedTerm [TypeArgument] -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: classTypeAnnotations :: TypedTerm ClassType -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: classTypeArguments :: TypedTerm ClassType -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: classTypeClassType :: TypedName ClassType
- Hydra.Dsl.Java.Syntax: classTypeIdentifier :: TypedTerm ClassType -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: classTypeQualifier :: TypedTerm ClassType -> TypedTerm ClassTypeQualifier
- Hydra.Dsl.Java.Syntax: classTypeQualifierClassTypeQualifier :: TypedName ClassTypeQualifier
- Hydra.Dsl.Java.Syntax: classTypeQualifierNone :: TypedTerm ClassTypeQualifier
- Hydra.Dsl.Java.Syntax: classTypeQualifierPackage :: TypedTerm PackageName -> TypedTerm ClassTypeQualifier
- Hydra.Dsl.Java.Syntax: classTypeQualifierParent :: TypedTerm ClassOrInterfaceType -> TypedTerm ClassTypeQualifier
- Hydra.Dsl.Java.Syntax: classTypeWithAnnotations :: TypedTerm ClassType -> TypedTerm [Annotation] -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: classTypeWithArguments :: TypedTerm ClassType -> TypedTerm [TypeArgument] -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: classTypeWithIdentifier :: TypedTerm ClassType -> TypedTerm TypeIdentifier -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: classTypeWithQualifier :: TypedTerm ClassType -> TypedTerm ClassTypeQualifier -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: compactConstructorDeclaration :: TypedTerm [ConstructorModifier] -> TypedTerm SimpleTypeName -> TypedTerm ConstructorBody -> TypedTerm CompactConstructorDeclaration
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationBody :: TypedTerm CompactConstructorDeclaration -> TypedTerm ConstructorBody
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationCompactConstructorDeclaration :: TypedName CompactConstructorDeclaration
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationModifiers :: TypedTerm CompactConstructorDeclaration -> TypedTerm [ConstructorModifier]
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationName :: TypedTerm CompactConstructorDeclaration -> TypedTerm SimpleTypeName
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationWithBody :: TypedTerm CompactConstructorDeclaration -> TypedTerm ConstructorBody -> TypedTerm CompactConstructorDeclaration
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationWithModifiers :: TypedTerm CompactConstructorDeclaration -> TypedTerm [ConstructorModifier] -> TypedTerm CompactConstructorDeclaration
- Hydra.Dsl.Java.Syntax: compactConstructorDeclarationWithName :: TypedTerm CompactConstructorDeclaration -> TypedTerm SimpleTypeName -> TypedTerm CompactConstructorDeclaration
- Hydra.Dsl.Java.Syntax: compilationUnitCompilationUnit :: TypedName CompilationUnit
- Hydra.Dsl.Java.Syntax: compilationUnitModular :: TypedTerm ModularCompilationUnit -> TypedTerm CompilationUnit
- Hydra.Dsl.Java.Syntax: compilationUnitOrdinary :: TypedTerm OrdinaryCompilationUnit -> TypedTerm CompilationUnit
- Hydra.Dsl.Java.Syntax: conditionalAndExpression :: TypedTerm [InclusiveOrExpression] -> TypedTerm ConditionalAndExpression
- Hydra.Dsl.Java.Syntax: conditionalAndExpressionConditionalAndExpression :: TypedName ConditionalAndExpression
- Hydra.Dsl.Java.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
- Hydra.Dsl.Java.Syntax: conditionalExpressionSimple :: TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression
- Hydra.Dsl.Java.Syntax: conditionalExpressionTernaryCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression
- Hydra.Dsl.Java.Syntax: conditionalExpressionTernaryLambda :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalExpression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCond :: TypedTerm ConditionalOrExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression -> TypedTerm ConditionalExpression_TernaryCond
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalOrExpression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondConditionalExpression_TernaryCond :: TypedName ConditionalExpression_TernaryCond
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondIfFalse :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondIfTrue :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondWithCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression_TernaryCond
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondWithIfFalse :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression -> TypedTerm ConditionalExpression_TernaryCond
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryCondWithIfTrue :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm Expression -> TypedTerm ConditionalExpression_TernaryCond
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambda :: TypedTerm ConditionalOrExpression -> TypedTerm Expression -> TypedTerm LambdaExpression -> TypedTerm ConditionalExpression_TernaryLambda
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaCond :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalOrExpression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda :: TypedName ConditionalExpression_TernaryLambda
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaIfFalse :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm LambdaExpression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaIfTrue :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaWithCond :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression_TernaryLambda
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaWithIfFalse :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm LambdaExpression -> TypedTerm ConditionalExpression_TernaryLambda
- Hydra.Dsl.Java.Syntax: conditionalExpression_TernaryLambdaWithIfTrue :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm Expression -> TypedTerm ConditionalExpression_TernaryLambda
- Hydra.Dsl.Java.Syntax: conditionalOrExpression :: TypedTerm [ConditionalAndExpression] -> TypedTerm ConditionalOrExpression
- Hydra.Dsl.Java.Syntax: conditionalOrExpressionConditionalOrExpression :: TypedName ConditionalOrExpression
- Hydra.Dsl.Java.Syntax: constantDeclaration :: TypedTerm [ConstantModifier] -> TypedTerm UnannType -> TypedTerm [VariableDeclarator] -> TypedTerm ConstantDeclaration
- Hydra.Dsl.Java.Syntax: constantDeclarationConstantDeclaration :: TypedName ConstantDeclaration
- Hydra.Dsl.Java.Syntax: constantDeclarationModifiers :: TypedTerm ConstantDeclaration -> TypedTerm [ConstantModifier]
- Hydra.Dsl.Java.Syntax: constantDeclarationType :: TypedTerm ConstantDeclaration -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: constantDeclarationVariables :: TypedTerm ConstantDeclaration -> TypedTerm [VariableDeclarator]
- Hydra.Dsl.Java.Syntax: constantDeclarationWithModifiers :: TypedTerm ConstantDeclaration -> TypedTerm [ConstantModifier] -> TypedTerm ConstantDeclaration
- Hydra.Dsl.Java.Syntax: constantDeclarationWithType :: TypedTerm ConstantDeclaration -> TypedTerm UnannType -> TypedTerm ConstantDeclaration
- Hydra.Dsl.Java.Syntax: constantDeclarationWithVariables :: TypedTerm ConstantDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm ConstantDeclaration
- Hydra.Dsl.Java.Syntax: constantExpression :: TypedTerm Expression -> TypedTerm ConstantExpression
- Hydra.Dsl.Java.Syntax: constantExpressionConstantExpression :: TypedName ConstantExpression
- Hydra.Dsl.Java.Syntax: constantModifierAnnotation :: TypedTerm Annotation -> TypedTerm ConstantModifier
- Hydra.Dsl.Java.Syntax: constantModifierConstantModifier :: TypedName ConstantModifier
- Hydra.Dsl.Java.Syntax: constantModifierFinal :: TypedTerm ConstantModifier
- Hydra.Dsl.Java.Syntax: constantModifierPublic :: TypedTerm ConstantModifier
- Hydra.Dsl.Java.Syntax: constantModifierStatic :: TypedTerm ConstantModifier
- Hydra.Dsl.Java.Syntax: constructorBody :: TypedTerm (Maybe ExplicitConstructorInvocation) -> TypedTerm [BlockStatement] -> TypedTerm ConstructorBody
- Hydra.Dsl.Java.Syntax: constructorBodyConstructorBody :: TypedName ConstructorBody
- Hydra.Dsl.Java.Syntax: constructorBodyInvocation :: TypedTerm ConstructorBody -> TypedTerm (Maybe ExplicitConstructorInvocation)
- Hydra.Dsl.Java.Syntax: constructorBodyStatements :: TypedTerm ConstructorBody -> TypedTerm [BlockStatement]
- Hydra.Dsl.Java.Syntax: constructorBodyWithInvocation :: TypedTerm ConstructorBody -> TypedTerm (Maybe ExplicitConstructorInvocation) -> TypedTerm ConstructorBody
- Hydra.Dsl.Java.Syntax: constructorBodyWithStatements :: TypedTerm ConstructorBody -> TypedTerm [BlockStatement] -> TypedTerm ConstructorBody
- Hydra.Dsl.Java.Syntax: constructorDeclaration :: TypedTerm [ConstructorModifier] -> TypedTerm ConstructorDeclarator -> TypedTerm (Maybe Throws) -> TypedTerm ConstructorBody -> TypedTerm ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarationBody :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorBody
- Hydra.Dsl.Java.Syntax: constructorDeclarationConstructor :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclarationConstructorDeclaration :: TypedName ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarationModifiers :: TypedTerm ConstructorDeclaration -> TypedTerm [ConstructorModifier]
- Hydra.Dsl.Java.Syntax: constructorDeclarationThrows :: TypedTerm ConstructorDeclaration -> TypedTerm (Maybe Throws)
- Hydra.Dsl.Java.Syntax: constructorDeclarationWithBody :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorBody -> TypedTerm ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarationWithConstructor :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorDeclarator -> TypedTerm ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarationWithModifiers :: TypedTerm ConstructorDeclaration -> TypedTerm [ConstructorModifier] -> TypedTerm ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarationWithThrows :: TypedTerm ConstructorDeclaration -> TypedTerm (Maybe Throws) -> TypedTerm ConstructorDeclaration
- Hydra.Dsl.Java.Syntax: constructorDeclarator :: TypedTerm [TypeParameter] -> TypedTerm SimpleTypeName -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm [FormalParameter] -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclaratorConstructorDeclarator :: TypedName ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclaratorFormalParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [FormalParameter]
- Hydra.Dsl.Java.Syntax: constructorDeclaratorName :: TypedTerm ConstructorDeclarator -> TypedTerm SimpleTypeName
- Hydra.Dsl.Java.Syntax: constructorDeclaratorParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [TypeParameter]
- Hydra.Dsl.Java.Syntax: constructorDeclaratorReceiverParameter :: TypedTerm ConstructorDeclarator -> TypedTerm (Maybe ReceiverParameter)
- Hydra.Dsl.Java.Syntax: constructorDeclaratorWithFormalParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [FormalParameter] -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclaratorWithName :: TypedTerm ConstructorDeclarator -> TypedTerm SimpleTypeName -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclaratorWithParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [TypeParameter] -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorDeclaratorWithReceiverParameter :: TypedTerm ConstructorDeclarator -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm ConstructorDeclarator
- Hydra.Dsl.Java.Syntax: constructorModifierAnnotation :: TypedTerm Annotation -> TypedTerm ConstructorModifier
- Hydra.Dsl.Java.Syntax: constructorModifierConstructorModifier :: TypedName ConstructorModifier
- Hydra.Dsl.Java.Syntax: constructorModifierPrivate :: TypedTerm ConstructorModifier
- Hydra.Dsl.Java.Syntax: constructorModifierProtected :: TypedTerm ConstructorModifier
- Hydra.Dsl.Java.Syntax: constructorModifierPublic :: TypedTerm ConstructorModifier
- Hydra.Dsl.Java.Syntax: continueStatement :: TypedTerm (Maybe Identifier) -> TypedTerm ContinueStatement
- Hydra.Dsl.Java.Syntax: continueStatementContinueStatement :: TypedName ContinueStatement
- Hydra.Dsl.Java.Syntax: defaultValue :: TypedTerm ElementValue -> TypedTerm DefaultValue
- Hydra.Dsl.Java.Syntax: defaultValueDefaultValue :: TypedName DefaultValue
- Hydra.Dsl.Java.Syntax: dimExpr :: TypedTerm [Annotation] -> TypedTerm (Maybe Expression) -> TypedTerm DimExpr
- Hydra.Dsl.Java.Syntax: dimExprAnnotations :: TypedTerm DimExpr -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: dimExprDimExpr :: TypedName DimExpr
- Hydra.Dsl.Java.Syntax: dimExprExpression :: TypedTerm DimExpr -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: dimExprWithAnnotations :: TypedTerm DimExpr -> TypedTerm [Annotation] -> TypedTerm DimExpr
- Hydra.Dsl.Java.Syntax: dimExprWithExpression :: TypedTerm DimExpr -> TypedTerm (Maybe Expression) -> TypedTerm DimExpr
- Hydra.Dsl.Java.Syntax: dims :: TypedTerm [[Annotation]] -> TypedTerm Dims
- Hydra.Dsl.Java.Syntax: dimsDims :: TypedName Dims
- Hydra.Dsl.Java.Syntax: doStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoStatement
- Hydra.Dsl.Java.Syntax: doStatementBody :: TypedTerm DoStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: doStatementCond :: TypedTerm DoStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: doStatementDoStatement :: TypedName DoStatement
- Hydra.Dsl.Java.Syntax: doStatementWithBody :: TypedTerm DoStatement -> TypedTerm Statement -> TypedTerm DoStatement
- Hydra.Dsl.Java.Syntax: doStatementWithCond :: TypedTerm DoStatement -> TypedTerm Expression -> TypedTerm DoStatement
- Hydra.Dsl.Java.Syntax: elementValueAnnotation :: TypedTerm Annotation -> TypedTerm ElementValue
- Hydra.Dsl.Java.Syntax: elementValueArrayInitializer :: TypedTerm [ElementValue] -> TypedTerm ElementValueArrayInitializer
- Hydra.Dsl.Java.Syntax: elementValueArrayInitializerElementValueArrayInitializer :: TypedName ElementValueArrayInitializer
- Hydra.Dsl.Java.Syntax: elementValueConditionalExpression :: TypedTerm ConditionalExpression -> TypedTerm ElementValue
- Hydra.Dsl.Java.Syntax: elementValueElementValue :: TypedName ElementValue
- Hydra.Dsl.Java.Syntax: elementValueElementValueArrayInitializer :: TypedTerm ElementValueArrayInitializer -> TypedTerm ElementValue
- Hydra.Dsl.Java.Syntax: elementValuePair :: TypedTerm Identifier -> TypedTerm ElementValue -> TypedTerm ElementValuePair
- Hydra.Dsl.Java.Syntax: elementValuePairElementValuePair :: TypedName ElementValuePair
- Hydra.Dsl.Java.Syntax: elementValuePairKey :: TypedTerm ElementValuePair -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: elementValuePairValue :: TypedTerm ElementValuePair -> TypedTerm ElementValue
- Hydra.Dsl.Java.Syntax: elementValuePairWithKey :: TypedTerm ElementValuePair -> TypedTerm Identifier -> TypedTerm ElementValuePair
- Hydra.Dsl.Java.Syntax: elementValuePairWithValue :: TypedTerm ElementValuePair -> TypedTerm ElementValue -> TypedTerm ElementValuePair
- Hydra.Dsl.Java.Syntax: enhancedForCond :: TypedTerm LocalVariableDeclaration -> TypedTerm Expression -> TypedTerm EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForCondDeclaration :: TypedTerm EnhancedForCond -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: enhancedForCondEnhancedForCond :: TypedName EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForCondExpression :: TypedTerm EnhancedForCond -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: enhancedForCondWithDeclaration :: TypedTerm EnhancedForCond -> TypedTerm LocalVariableDeclaration -> TypedTerm EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForCondWithExpression :: TypedTerm EnhancedForCond -> TypedTerm Expression -> TypedTerm EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForStatement :: TypedTerm EnhancedForCond -> TypedTerm Statement -> TypedTerm EnhancedForStatement
- Hydra.Dsl.Java.Syntax: enhancedForStatementBody :: TypedTerm EnhancedForStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: enhancedForStatementCond :: TypedTerm EnhancedForStatement -> TypedTerm EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForStatementEnhancedForStatement :: TypedName EnhancedForStatement
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIf :: TypedTerm EnhancedForCond -> TypedTerm StatementNoShortIf -> TypedTerm EnhancedForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIfBody :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIfCond :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm EnhancedForCond
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIfEnhancedForStatementNoShortIf :: TypedName EnhancedForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIfWithBody :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm EnhancedForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: enhancedForStatementNoShortIfWithCond :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm EnhancedForCond -> TypedTerm EnhancedForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: enhancedForStatementWithBody :: TypedTerm EnhancedForStatement -> TypedTerm Statement -> TypedTerm EnhancedForStatement
- Hydra.Dsl.Java.Syntax: enhancedForStatementWithCond :: TypedTerm EnhancedForStatement -> TypedTerm EnhancedForCond -> TypedTerm EnhancedForStatement
- Hydra.Dsl.Java.Syntax: enumBody :: TypedTerm [EnumBody_Element] -> TypedTerm EnumBody
- Hydra.Dsl.Java.Syntax: enumBodyEnumBody :: TypedName EnumBody
- Hydra.Dsl.Java.Syntax: enumBody_Element :: TypedTerm [EnumConstant] -> TypedTerm [ClassBodyDeclaration] -> TypedTerm EnumBody_Element
- Hydra.Dsl.Java.Syntax: enumBody_ElementBodyDeclarations :: TypedTerm EnumBody_Element -> TypedTerm [ClassBodyDeclaration]
- Hydra.Dsl.Java.Syntax: enumBody_ElementConstants :: TypedTerm EnumBody_Element -> TypedTerm [EnumConstant]
- Hydra.Dsl.Java.Syntax: enumBody_ElementEnumBody_Element :: TypedName EnumBody_Element
- Hydra.Dsl.Java.Syntax: enumBody_ElementWithBodyDeclarations :: TypedTerm EnumBody_Element -> TypedTerm [ClassBodyDeclaration] -> TypedTerm EnumBody_Element
- Hydra.Dsl.Java.Syntax: enumBody_ElementWithConstants :: TypedTerm EnumBody_Element -> TypedTerm [EnumConstant] -> TypedTerm EnumBody_Element
- Hydra.Dsl.Java.Syntax: enumConstant :: TypedTerm [EnumConstantModifier] -> TypedTerm Identifier -> TypedTerm (Maybe [Expression]) -> TypedTerm (Maybe ClassBody) -> TypedTerm EnumConstant
- Hydra.Dsl.Java.Syntax: enumConstantArguments :: TypedTerm EnumConstant -> TypedTerm (Maybe [Expression])
- Hydra.Dsl.Java.Syntax: enumConstantBody :: TypedTerm EnumConstant -> TypedTerm (Maybe ClassBody)
- Hydra.Dsl.Java.Syntax: enumConstantEnumConstant :: TypedName EnumConstant
- Hydra.Dsl.Java.Syntax: enumConstantIdentifier :: TypedTerm EnumConstant -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: enumConstantModifier :: TypedTerm Annotation -> TypedTerm EnumConstantModifier
- Hydra.Dsl.Java.Syntax: enumConstantModifierEnumConstantModifier :: TypedName EnumConstantModifier
- Hydra.Dsl.Java.Syntax: enumConstantModifiers :: TypedTerm EnumConstant -> TypedTerm [EnumConstantModifier]
- Hydra.Dsl.Java.Syntax: enumConstantWithArguments :: TypedTerm EnumConstant -> TypedTerm (Maybe [Expression]) -> TypedTerm EnumConstant
- Hydra.Dsl.Java.Syntax: enumConstantWithBody :: TypedTerm EnumConstant -> TypedTerm (Maybe ClassBody) -> TypedTerm EnumConstant
- Hydra.Dsl.Java.Syntax: enumConstantWithIdentifier :: TypedTerm EnumConstant -> TypedTerm Identifier -> TypedTerm EnumConstant
- Hydra.Dsl.Java.Syntax: enumConstantWithModifiers :: TypedTerm EnumConstant -> TypedTerm [EnumConstantModifier] -> TypedTerm EnumConstant
- Hydra.Dsl.Java.Syntax: enumDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [InterfaceType] -> TypedTerm EnumBody -> TypedTerm EnumDeclaration
- Hydra.Dsl.Java.Syntax: enumDeclarationBody :: TypedTerm EnumDeclaration -> TypedTerm EnumBody
- Hydra.Dsl.Java.Syntax: enumDeclarationEnumDeclaration :: TypedName EnumDeclaration
- Hydra.Dsl.Java.Syntax: enumDeclarationIdentifier :: TypedTerm EnumDeclaration -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: enumDeclarationImplements :: TypedTerm EnumDeclaration -> TypedTerm [InterfaceType]
- Hydra.Dsl.Java.Syntax: enumDeclarationModifiers :: TypedTerm EnumDeclaration -> TypedTerm [ClassModifier]
- Hydra.Dsl.Java.Syntax: enumDeclarationWithBody :: TypedTerm EnumDeclaration -> TypedTerm EnumBody -> TypedTerm EnumDeclaration
- Hydra.Dsl.Java.Syntax: enumDeclarationWithIdentifier :: TypedTerm EnumDeclaration -> TypedTerm TypeIdentifier -> TypedTerm EnumDeclaration
- Hydra.Dsl.Java.Syntax: enumDeclarationWithImplements :: TypedTerm EnumDeclaration -> TypedTerm [InterfaceType] -> TypedTerm EnumDeclaration
- Hydra.Dsl.Java.Syntax: enumDeclarationWithModifiers :: TypedTerm EnumDeclaration -> TypedTerm [ClassModifier] -> TypedTerm EnumDeclaration
- Hydra.Dsl.Java.Syntax: equalityExpressionEqual :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
- Hydra.Dsl.Java.Syntax: equalityExpressionEqualityExpression :: TypedName EqualityExpression
- Hydra.Dsl.Java.Syntax: equalityExpressionNotEqual :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
- Hydra.Dsl.Java.Syntax: equalityExpressionUnary :: TypedTerm RelationalExpression -> TypedTerm EqualityExpression
- Hydra.Dsl.Java.Syntax: equalityExpression_Binary :: TypedTerm EqualityExpression -> TypedTerm RelationalExpression -> TypedTerm EqualityExpression_Binary
- Hydra.Dsl.Java.Syntax: equalityExpression_BinaryEqualityExpression_Binary :: TypedName EqualityExpression_Binary
- Hydra.Dsl.Java.Syntax: equalityExpression_BinaryLhs :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
- Hydra.Dsl.Java.Syntax: equalityExpression_BinaryRhs :: TypedTerm EqualityExpression_Binary -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: equalityExpression_BinaryWithLhs :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression -> TypedTerm EqualityExpression_Binary
- Hydra.Dsl.Java.Syntax: equalityExpression_BinaryWithRhs :: TypedTerm EqualityExpression_Binary -> TypedTerm RelationalExpression -> TypedTerm EqualityExpression_Binary
- Hydra.Dsl.Java.Syntax: exceptionTypeClass :: TypedTerm ClassType -> TypedTerm ExceptionType
- Hydra.Dsl.Java.Syntax: exceptionTypeExceptionType :: TypedName ExceptionType
- Hydra.Dsl.Java.Syntax: exceptionTypeVariable :: TypedTerm TypeVariable -> TypedTerm ExceptionType
- Hydra.Dsl.Java.Syntax: exclusiveOrExpression :: TypedTerm [AndExpression] -> TypedTerm ExclusiveOrExpression
- Hydra.Dsl.Java.Syntax: exclusiveOrExpressionExclusiveOrExpression :: TypedName ExclusiveOrExpression
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocation :: TypedTerm [TypeArgument] -> TypedTerm [Expression] -> TypedTerm ExplicitConstructorInvocation_Variant -> TypedTerm ExplicitConstructorInvocation
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [Expression]
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationExplicitConstructorInvocation :: TypedName ExplicitConstructorInvocation
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationTypeArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationVariant :: TypedTerm ExplicitConstructorInvocation -> TypedTerm ExplicitConstructorInvocation_Variant
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationWithArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [Expression] -> TypedTerm ExplicitConstructorInvocation
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationWithTypeArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [TypeArgument] -> TypedTerm ExplicitConstructorInvocation
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocationWithVariant :: TypedTerm ExplicitConstructorInvocation -> TypedTerm ExplicitConstructorInvocation_Variant -> TypedTerm ExplicitConstructorInvocation
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant :: TypedName ExplicitConstructorInvocation_Variant
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocation_VariantPrimary :: TypedTerm Primary -> TypedTerm ExplicitConstructorInvocation_Variant
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocation_VariantSuper :: TypedTerm (Maybe ExpressionName) -> TypedTerm ExplicitConstructorInvocation_Variant
- Hydra.Dsl.Java.Syntax: explicitConstructorInvocation_VariantThis :: TypedTerm ExplicitConstructorInvocation_Variant
- Hydra.Dsl.Java.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: expressionExpression :: TypedName Expression
- Hydra.Dsl.Java.Syntax: expressionLambda :: TypedTerm LambdaExpression -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: expressionName :: TypedTerm (Maybe AmbiguousName) -> TypedTerm Identifier -> TypedTerm ExpressionName
- Hydra.Dsl.Java.Syntax: expressionNameExpressionName :: TypedName ExpressionName
- Hydra.Dsl.Java.Syntax: expressionNameIdentifier :: TypedTerm ExpressionName -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: expressionNameQualifier :: TypedTerm ExpressionName -> TypedTerm (Maybe AmbiguousName)
- Hydra.Dsl.Java.Syntax: expressionNameWithIdentifier :: TypedTerm ExpressionName -> TypedTerm Identifier -> TypedTerm ExpressionName
- Hydra.Dsl.Java.Syntax: expressionNameWithQualifier :: TypedTerm ExpressionName -> TypedTerm (Maybe AmbiguousName) -> TypedTerm ExpressionName
- Hydra.Dsl.Java.Syntax: expressionStatement :: TypedTerm StatementExpression -> TypedTerm ExpressionStatement
- Hydra.Dsl.Java.Syntax: expressionStatementExpressionStatement :: TypedName ExpressionStatement
- Hydra.Dsl.Java.Syntax: fieldAccess :: TypedTerm FieldAccess_Qualifier -> TypedTerm Identifier -> TypedTerm FieldAccess
- Hydra.Dsl.Java.Syntax: fieldAccessFieldAccess :: TypedName FieldAccess
- Hydra.Dsl.Java.Syntax: fieldAccessIdentifier :: TypedTerm FieldAccess -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: fieldAccessQualifier :: TypedTerm FieldAccess -> TypedTerm FieldAccess_Qualifier
- Hydra.Dsl.Java.Syntax: fieldAccessWithIdentifier :: TypedTerm FieldAccess -> TypedTerm Identifier -> TypedTerm FieldAccess
- Hydra.Dsl.Java.Syntax: fieldAccessWithQualifier :: TypedTerm FieldAccess -> TypedTerm FieldAccess_Qualifier -> TypedTerm FieldAccess
- Hydra.Dsl.Java.Syntax: fieldAccess_QualifierFieldAccess_Qualifier :: TypedName FieldAccess_Qualifier
- Hydra.Dsl.Java.Syntax: fieldAccess_QualifierPrimary :: TypedTerm Primary -> TypedTerm FieldAccess_Qualifier
- Hydra.Dsl.Java.Syntax: fieldAccess_QualifierSuper :: TypedTerm FieldAccess_Qualifier
- Hydra.Dsl.Java.Syntax: fieldAccess_QualifierTyped :: TypedTerm TypeName -> TypedTerm FieldAccess_Qualifier
- Hydra.Dsl.Java.Syntax: fieldDeclaration :: TypedTerm [FieldModifier] -> TypedTerm UnannType -> TypedTerm [VariableDeclarator] -> TypedTerm FieldDeclaration
- Hydra.Dsl.Java.Syntax: fieldDeclarationFieldDeclaration :: TypedName FieldDeclaration
- Hydra.Dsl.Java.Syntax: fieldDeclarationModifiers :: TypedTerm FieldDeclaration -> TypedTerm [FieldModifier]
- Hydra.Dsl.Java.Syntax: fieldDeclarationUnannType :: TypedTerm FieldDeclaration -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: fieldDeclarationVariableDeclarators :: TypedTerm FieldDeclaration -> TypedTerm [VariableDeclarator]
- Hydra.Dsl.Java.Syntax: fieldDeclarationWithModifiers :: TypedTerm FieldDeclaration -> TypedTerm [FieldModifier] -> TypedTerm FieldDeclaration
- Hydra.Dsl.Java.Syntax: fieldDeclarationWithUnannType :: TypedTerm FieldDeclaration -> TypedTerm UnannType -> TypedTerm FieldDeclaration
- Hydra.Dsl.Java.Syntax: fieldDeclarationWithVariableDeclarators :: TypedTerm FieldDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm FieldDeclaration
- Hydra.Dsl.Java.Syntax: fieldModifierAnnotation :: TypedTerm Annotation -> TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierFieldModifier :: TypedName FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierFinal :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierPrivate :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierProtected :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierPublic :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierStatic :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierTransient :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: fieldModifierVolatile :: TypedTerm FieldModifier
- Hydra.Dsl.Java.Syntax: finally :: TypedTerm Block -> TypedTerm Finally
- Hydra.Dsl.Java.Syntax: finallyFinally :: TypedName Finally
- Hydra.Dsl.Java.Syntax: floatingPointLiteral :: TypedTerm Double -> TypedTerm FloatingPointLiteral
- Hydra.Dsl.Java.Syntax: floatingPointLiteralFloatingPointLiteral :: TypedName FloatingPointLiteral
- Hydra.Dsl.Java.Syntax: floatingPointTypeDouble :: TypedTerm FloatingPointType
- Hydra.Dsl.Java.Syntax: floatingPointTypeFloat :: TypedTerm FloatingPointType
- Hydra.Dsl.Java.Syntax: floatingPointTypeFloatingPointType :: TypedName FloatingPointType
- Hydra.Dsl.Java.Syntax: forCond :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe ForUpdate) -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: forCondCond :: TypedTerm ForCond -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: forCondForCond :: TypedName ForCond
- Hydra.Dsl.Java.Syntax: forCondInit :: TypedTerm ForCond -> TypedTerm (Maybe ForInit)
- Hydra.Dsl.Java.Syntax: forCondUpdate :: TypedTerm ForCond -> TypedTerm (Maybe ForUpdate)
- Hydra.Dsl.Java.Syntax: forCondWithCond :: TypedTerm ForCond -> TypedTerm (Maybe Expression) -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: forCondWithInit :: TypedTerm ForCond -> TypedTerm (Maybe ForInit) -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: forCondWithUpdate :: TypedTerm ForCond -> TypedTerm (Maybe ForUpdate) -> TypedTerm ForCond
- Hydra.Dsl.Java.Syntax: forInitForInit :: TypedName ForInit
- Hydra.Dsl.Java.Syntax: forInitLocalVariable :: TypedTerm LocalVariableDeclaration -> TypedTerm ForInit
- Hydra.Dsl.Java.Syntax: forInitStatements :: TypedTerm [StatementExpression] -> TypedTerm ForInit
- Hydra.Dsl.Java.Syntax: forStatementBasic :: TypedTerm BasicForStatement -> TypedTerm ForStatement
- Hydra.Dsl.Java.Syntax: forStatementEnhanced :: TypedTerm EnhancedForStatement -> TypedTerm ForStatement
- Hydra.Dsl.Java.Syntax: forStatementForStatement :: TypedName ForStatement
- Hydra.Dsl.Java.Syntax: forStatementNoShortIfBasic :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: forStatementNoShortIfEnhanced :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm ForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: forStatementNoShortIfForStatementNoShortIf :: TypedName ForStatementNoShortIf
- Hydra.Dsl.Java.Syntax: forUpdate :: TypedTerm [StatementExpression] -> TypedTerm ForUpdate
- Hydra.Dsl.Java.Syntax: forUpdateForUpdate :: TypedName ForUpdate
- Hydra.Dsl.Java.Syntax: formalParameterFormalParameter :: TypedName FormalParameter
- Hydra.Dsl.Java.Syntax: formalParameterSimple :: TypedTerm FormalParameter_Simple -> TypedTerm FormalParameter
- Hydra.Dsl.Java.Syntax: formalParameterVariableArity :: TypedTerm VariableArityParameter -> TypedTerm FormalParameter
- Hydra.Dsl.Java.Syntax: formalParameter_Simple :: TypedTerm [VariableModifier] -> TypedTerm UnannType -> TypedTerm VariableDeclaratorId -> TypedTerm FormalParameter_Simple
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleFormalParameter_Simple :: TypedName FormalParameter_Simple
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleId :: TypedTerm FormalParameter_Simple -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleModifiers :: TypedTerm FormalParameter_Simple -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleType :: TypedTerm FormalParameter_Simple -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleWithId :: TypedTerm FormalParameter_Simple -> TypedTerm VariableDeclaratorId -> TypedTerm FormalParameter_Simple
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleWithModifiers :: TypedTerm FormalParameter_Simple -> TypedTerm [VariableModifier] -> TypedTerm FormalParameter_Simple
- Hydra.Dsl.Java.Syntax: formalParameter_SimpleWithType :: TypedTerm FormalParameter_Simple -> TypedTerm UnannType -> TypedTerm FormalParameter_Simple
- Hydra.Dsl.Java.Syntax: guard :: TypedTerm Expression -> TypedTerm Guard
- Hydra.Dsl.Java.Syntax: guardGuard :: TypedName Guard
- Hydra.Dsl.Java.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: identifierIdentifier :: TypedName Identifier
- Hydra.Dsl.Java.Syntax: ifThenElseStatement :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm Statement -> TypedTerm IfThenElseStatement
- Hydra.Dsl.Java.Syntax: ifThenElseStatementCond :: TypedTerm IfThenElseStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: ifThenElseStatementElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: ifThenElseStatementIfThenElseStatement :: TypedName IfThenElseStatement
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIf :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfCond :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf :: TypedName IfThenElseStatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfThen :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfWithCond :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm (Maybe Expression) -> TypedTerm IfThenElseStatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfWithElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementNoShortIfWithThen :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementThen :: TypedTerm IfThenElseStatement -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: ifThenElseStatementWithCond :: TypedTerm IfThenElseStatement -> TypedTerm (Maybe Expression) -> TypedTerm IfThenElseStatement
- Hydra.Dsl.Java.Syntax: ifThenElseStatementWithElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement -> TypedTerm IfThenElseStatement
- Hydra.Dsl.Java.Syntax: ifThenElseStatementWithThen :: TypedTerm IfThenElseStatement -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatement
- Hydra.Dsl.Java.Syntax: ifThenStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm IfThenStatement
- Hydra.Dsl.Java.Syntax: ifThenStatementExpression :: TypedTerm IfThenStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: ifThenStatementIfThenStatement :: TypedName IfThenStatement
- Hydra.Dsl.Java.Syntax: ifThenStatementStatement :: TypedTerm IfThenStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: ifThenStatementWithExpression :: TypedTerm IfThenStatement -> TypedTerm Expression -> TypedTerm IfThenStatement
- Hydra.Dsl.Java.Syntax: ifThenStatementWithStatement :: TypedTerm IfThenStatement -> TypedTerm Statement -> TypedTerm IfThenStatement
- Hydra.Dsl.Java.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
- Hydra.Dsl.Java.Syntax: importDeclarationSingleStaticImport :: TypedTerm SingleStaticImportDeclaration -> TypedTerm ImportDeclaration
- Hydra.Dsl.Java.Syntax: importDeclarationSingleType :: TypedTerm SingleTypeImportDeclaration -> TypedTerm ImportDeclaration
- Hydra.Dsl.Java.Syntax: importDeclarationStaticImportOnDemand :: TypedTerm StaticImportOnDemandDeclaration -> TypedTerm ImportDeclaration
- Hydra.Dsl.Java.Syntax: importDeclarationTypeImportOnDemand :: TypedTerm TypeImportOnDemandDeclaration -> TypedTerm ImportDeclaration
- Hydra.Dsl.Java.Syntax: inclusiveOrExpression :: TypedTerm [ExclusiveOrExpression] -> TypedTerm InclusiveOrExpression
- Hydra.Dsl.Java.Syntax: inclusiveOrExpressionInclusiveOrExpression :: TypedName InclusiveOrExpression
- Hydra.Dsl.Java.Syntax: instanceInitializer :: TypedTerm Block -> TypedTerm InstanceInitializer
- Hydra.Dsl.Java.Syntax: instanceInitializerInstanceInitializer :: TypedName InstanceInitializer
- Hydra.Dsl.Java.Syntax: instanceofExpression :: TypedTerm RelationalExpression -> TypedTerm InstanceofExpression_Rhs -> TypedTerm InstanceofExpression
- Hydra.Dsl.Java.Syntax: instanceofExpressionInstanceofExpression :: TypedName InstanceofExpression
- Hydra.Dsl.Java.Syntax: instanceofExpressionLhs :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: instanceofExpressionRhs :: TypedTerm InstanceofExpression -> TypedTerm InstanceofExpression_Rhs
- Hydra.Dsl.Java.Syntax: instanceofExpressionWithLhs :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression -> TypedTerm InstanceofExpression
- Hydra.Dsl.Java.Syntax: instanceofExpressionWithRhs :: TypedTerm InstanceofExpression -> TypedTerm InstanceofExpression_Rhs -> TypedTerm InstanceofExpression
- Hydra.Dsl.Java.Syntax: instanceofExpression_RhsInstanceofExpression_Rhs :: TypedName InstanceofExpression_Rhs
- Hydra.Dsl.Java.Syntax: instanceofExpression_RhsPattern :: TypedTerm Pattern -> TypedTerm InstanceofExpression_Rhs
- Hydra.Dsl.Java.Syntax: instanceofExpression_RhsReferenceType :: TypedTerm ReferenceType -> TypedTerm InstanceofExpression_Rhs
- Hydra.Dsl.Java.Syntax: integerLiteral :: TypedTerm Integer -> TypedTerm IntegerLiteral
- Hydra.Dsl.Java.Syntax: integerLiteralIntegerLiteral :: TypedName IntegerLiteral
- Hydra.Dsl.Java.Syntax: integralTypeByte :: TypedTerm IntegralType
- Hydra.Dsl.Java.Syntax: integralTypeChar :: TypedTerm IntegralType
- Hydra.Dsl.Java.Syntax: integralTypeInt :: TypedTerm IntegralType
- Hydra.Dsl.Java.Syntax: integralTypeIntegralType :: TypedName IntegralType
- Hydra.Dsl.Java.Syntax: integralTypeLong :: TypedTerm IntegralType
- Hydra.Dsl.Java.Syntax: integralTypeShort :: TypedTerm IntegralType
- Hydra.Dsl.Java.Syntax: interfaceBody :: TypedTerm [InterfaceMemberDeclarationWithComments] -> TypedTerm InterfaceBody
- Hydra.Dsl.Java.Syntax: interfaceBodyInterfaceBody :: TypedName InterfaceBody
- Hydra.Dsl.Java.Syntax: interfaceDeclarationAnnotationInterface :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.Java.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
- Hydra.Dsl.Java.Syntax: interfaceDeclarationNormalInterface :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationConstant :: TypedTerm ConstantDeclaration -> TypedTerm InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationInterfaceMemberDeclaration :: TypedName InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationInterfaceMethod :: TypedTerm InterfaceMethodDeclaration -> TypedTerm InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithComments :: TypedTerm InterfaceMemberDeclaration -> TypedTerm (Maybe String) -> TypedTerm InterfaceMemberDeclarationWithComments
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithCommentsComments :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm (Maybe String)
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments :: TypedName InterfaceMemberDeclarationWithComments
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithCommentsValue :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm InterfaceMemberDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithCommentsWithComments :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm InterfaceMemberDeclarationWithComments
- Hydra.Dsl.Java.Syntax: interfaceMemberDeclarationWithCommentsWithValue :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm InterfaceMemberDeclaration -> TypedTerm InterfaceMemberDeclarationWithComments
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclaration :: TypedTerm [InterfaceMethodModifier] -> TypedTerm MethodHeader -> TypedTerm MethodBody -> TypedTerm InterfaceMethodDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationBody :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodBody
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationHeader :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationInterfaceMethodDeclaration :: TypedName InterfaceMethodDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationModifiers :: TypedTerm InterfaceMethodDeclaration -> TypedTerm [InterfaceMethodModifier]
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationWithBody :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodBody -> TypedTerm InterfaceMethodDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationWithHeader :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodHeader -> TypedTerm InterfaceMethodDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMethodDeclarationWithModifiers :: TypedTerm InterfaceMethodDeclaration -> TypedTerm [InterfaceMethodModifier] -> TypedTerm InterfaceMethodDeclaration
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierAbstract :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierAnnotation :: TypedTerm Annotation -> TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierDefault :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierInterfaceMethodModifier :: TypedName InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierPrivate :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierPublic :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierStatic :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceMethodModifierStrictfp :: TypedTerm InterfaceMethodModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierAbstract :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierAnnotation :: TypedTerm Annotation -> TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierInterfaceModifier :: TypedName InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierNonSealed :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierPrivate :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierProtected :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierPublic :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierSealed :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierStatic :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceModifierStrictfp :: TypedTerm InterfaceModifier
- Hydra.Dsl.Java.Syntax: interfaceType :: TypedTerm ClassType -> TypedTerm InterfaceType
- Hydra.Dsl.Java.Syntax: interfaceTypeInterfaceType :: TypedName InterfaceType
- Hydra.Dsl.Java.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.Java.Syntax: labeledStatementIdentifier :: TypedTerm LabeledStatement -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIf :: TypedTerm Identifier -> TypedTerm StatementNoShortIf -> TypedTerm LabeledStatementNoShortIf
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIfIdentifier :: TypedTerm LabeledStatementNoShortIf -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIfLabeledStatementNoShortIf :: TypedName LabeledStatementNoShortIf
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIfStatement :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIfWithIdentifier :: TypedTerm LabeledStatementNoShortIf -> TypedTerm Identifier -> TypedTerm LabeledStatementNoShortIf
- Hydra.Dsl.Java.Syntax: labeledStatementNoShortIfWithStatement :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm LabeledStatementNoShortIf
- Hydra.Dsl.Java.Syntax: labeledStatementStatement :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: labeledStatementWithIdentifier :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
- Hydra.Dsl.Java.Syntax: labeledStatementWithStatement :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
- Hydra.Dsl.Java.Syntax: lambdaBodyBlock :: TypedTerm Block -> TypedTerm LambdaBody
- Hydra.Dsl.Java.Syntax: lambdaBodyExpression :: TypedTerm Expression -> TypedTerm LambdaBody
- Hydra.Dsl.Java.Syntax: lambdaBodyLambdaBody :: TypedName LambdaBody
- Hydra.Dsl.Java.Syntax: lambdaExpression :: TypedTerm LambdaParameters -> TypedTerm LambdaBody -> TypedTerm LambdaExpression
- Hydra.Dsl.Java.Syntax: lambdaExpressionBody :: TypedTerm LambdaExpression -> TypedTerm LambdaBody
- Hydra.Dsl.Java.Syntax: lambdaExpressionLambdaExpression :: TypedName LambdaExpression
- Hydra.Dsl.Java.Syntax: lambdaExpressionParameters :: TypedTerm LambdaExpression -> TypedTerm LambdaParameters
- Hydra.Dsl.Java.Syntax: lambdaExpressionWithBody :: TypedTerm LambdaExpression -> TypedTerm LambdaBody -> TypedTerm LambdaExpression
- Hydra.Dsl.Java.Syntax: lambdaExpressionWithParameters :: TypedTerm LambdaExpression -> TypedTerm LambdaParameters -> TypedTerm LambdaExpression
- Hydra.Dsl.Java.Syntax: lambdaParameterLambdaParameter :: TypedName LambdaParameter
- Hydra.Dsl.Java.Syntax: lambdaParameterNormal :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameter
- Hydra.Dsl.Java.Syntax: lambdaParameterTypeLambdaParameterType :: TypedName LambdaParameterType
- Hydra.Dsl.Java.Syntax: lambdaParameterTypeType :: TypedTerm UnannType -> TypedTerm LambdaParameterType
- Hydra.Dsl.Java.Syntax: lambdaParameterTypeVar :: TypedTerm LambdaParameterType
- Hydra.Dsl.Java.Syntax: lambdaParameterVariableArity :: TypedTerm VariableArityParameter -> TypedTerm LambdaParameter
- Hydra.Dsl.Java.Syntax: lambdaParameter_Normal :: TypedTerm [VariableModifier] -> TypedTerm LambdaParameterType -> TypedTerm VariableDeclaratorId -> TypedTerm LambdaParameter_Normal
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalId :: TypedTerm LambdaParameter_Normal -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalLambdaParameter_Normal :: TypedName LambdaParameter_Normal
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalModifiers :: TypedTerm LambdaParameter_Normal -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalType :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameterType
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalWithId :: TypedTerm LambdaParameter_Normal -> TypedTerm VariableDeclaratorId -> TypedTerm LambdaParameter_Normal
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalWithModifiers :: TypedTerm LambdaParameter_Normal -> TypedTerm [VariableModifier] -> TypedTerm LambdaParameter_Normal
- Hydra.Dsl.Java.Syntax: lambdaParameter_NormalWithType :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameterType -> TypedTerm LambdaParameter_Normal
- Hydra.Dsl.Java.Syntax: lambdaParametersLambdaParameters :: TypedName LambdaParameters
- Hydra.Dsl.Java.Syntax: lambdaParametersSingle :: TypedTerm Identifier -> TypedTerm LambdaParameters
- Hydra.Dsl.Java.Syntax: lambdaParametersTuple :: TypedTerm [LambdaParameters] -> TypedTerm LambdaParameters
- Hydra.Dsl.Java.Syntax: leftHandSideArrayAccess :: TypedTerm ArrayAccess -> TypedTerm LeftHandSide
- Hydra.Dsl.Java.Syntax: leftHandSideExpressionName :: TypedTerm ExpressionName -> TypedTerm LeftHandSide
- Hydra.Dsl.Java.Syntax: leftHandSideFieldAccess :: TypedTerm FieldAccess -> TypedTerm LeftHandSide
- Hydra.Dsl.Java.Syntax: leftHandSideLeftHandSide :: TypedName LeftHandSide
- Hydra.Dsl.Java.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalCharacter :: TypedTerm Int -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalFloatingPoint :: TypedTerm FloatingPointLiteral -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalInteger :: TypedTerm IntegerLiteral -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalLiteral :: TypedName Literal
- Hydra.Dsl.Java.Syntax: literalNull :: TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: literalTextBlock :: TypedTerm TextBlock -> TypedTerm Literal
- Hydra.Dsl.Java.Syntax: localClassOrInterfaceDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm LocalClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration :: TypedName LocalClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: localClassOrInterfaceDeclarationNormalInterface :: TypedTerm NormalInterfaceDeclaration -> TypedTerm LocalClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: localVariableDeclaration :: TypedTerm [VariableModifier] -> TypedTerm LocalVariableType -> TypedTerm [VariableDeclarator] -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: localVariableDeclarationDeclarators :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableDeclarator]
- Hydra.Dsl.Java.Syntax: localVariableDeclarationLocalVariableDeclaration :: TypedName LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: localVariableDeclarationModifiers :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: localVariableDeclarationStatement :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableDeclarationStatement
- Hydra.Dsl.Java.Syntax: localVariableDeclarationStatementLocalVariableDeclarationStatement :: TypedName LocalVariableDeclarationStatement
- Hydra.Dsl.Java.Syntax: localVariableDeclarationType :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableType
- Hydra.Dsl.Java.Syntax: localVariableDeclarationWithDeclarators :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: localVariableDeclarationWithModifiers :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableModifier] -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: localVariableDeclarationWithType :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableType -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: localVariableTypeLocalVariableType :: TypedName LocalVariableType
- Hydra.Dsl.Java.Syntax: localVariableTypeType :: TypedTerm UnannType -> TypedTerm LocalVariableType
- Hydra.Dsl.Java.Syntax: localVariableTypeVar :: TypedTerm LocalVariableType
- Hydra.Dsl.Java.Syntax: markerAnnotation :: TypedTerm TypeName -> TypedTerm MarkerAnnotation
- Hydra.Dsl.Java.Syntax: markerAnnotationMarkerAnnotation :: TypedName MarkerAnnotation
- Hydra.Dsl.Java.Syntax: methodBodyBlock :: TypedTerm Block -> TypedTerm MethodBody
- Hydra.Dsl.Java.Syntax: methodBodyMethodBody :: TypedName MethodBody
- Hydra.Dsl.Java.Syntax: methodBodyNone :: TypedTerm MethodBody
- Hydra.Dsl.Java.Syntax: methodDeclaration :: TypedTerm [Annotation] -> TypedTerm [MethodModifier] -> TypedTerm MethodHeader -> TypedTerm MethodBody -> TypedTerm MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarationAnnotations :: TypedTerm MethodDeclaration -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: methodDeclarationBody :: TypedTerm MethodDeclaration -> TypedTerm MethodBody
- Hydra.Dsl.Java.Syntax: methodDeclarationHeader :: TypedTerm MethodDeclaration -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodDeclarationMethodDeclaration :: TypedName MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarationModifiers :: TypedTerm MethodDeclaration -> TypedTerm [MethodModifier]
- Hydra.Dsl.Java.Syntax: methodDeclarationWithAnnotations :: TypedTerm MethodDeclaration -> TypedTerm [Annotation] -> TypedTerm MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarationWithBody :: TypedTerm MethodDeclaration -> TypedTerm MethodBody -> TypedTerm MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarationWithHeader :: TypedTerm MethodDeclaration -> TypedTerm MethodHeader -> TypedTerm MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarationWithModifiers :: TypedTerm MethodDeclaration -> TypedTerm [MethodModifier] -> TypedTerm MethodDeclaration
- Hydra.Dsl.Java.Syntax: methodDeclarator :: TypedTerm Identifier -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm [FormalParameter] -> TypedTerm MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodDeclaratorFormalParameters :: TypedTerm MethodDeclarator -> TypedTerm [FormalParameter]
- Hydra.Dsl.Java.Syntax: methodDeclaratorIdentifier :: TypedTerm MethodDeclarator -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodDeclaratorMethodDeclarator :: TypedName MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodDeclaratorReceiverParameter :: TypedTerm MethodDeclarator -> TypedTerm (Maybe ReceiverParameter)
- Hydra.Dsl.Java.Syntax: methodDeclaratorWithFormalParameters :: TypedTerm MethodDeclarator -> TypedTerm [FormalParameter] -> TypedTerm MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodDeclaratorWithIdentifier :: TypedTerm MethodDeclarator -> TypedTerm Identifier -> TypedTerm MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodDeclaratorWithReceiverParameter :: TypedTerm MethodDeclarator -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodHeader :: TypedTerm [TypeParameter] -> TypedTerm Result -> TypedTerm MethodDeclarator -> TypedTerm (Maybe Throws) -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodHeaderDeclarator :: TypedTerm MethodHeader -> TypedTerm MethodDeclarator
- Hydra.Dsl.Java.Syntax: methodHeaderMethodHeader :: TypedName MethodHeader
- Hydra.Dsl.Java.Syntax: methodHeaderParameters :: TypedTerm MethodHeader -> TypedTerm [TypeParameter]
- Hydra.Dsl.Java.Syntax: methodHeaderResult :: TypedTerm MethodHeader -> TypedTerm Result
- Hydra.Dsl.Java.Syntax: methodHeaderThrows :: TypedTerm MethodHeader -> TypedTerm (Maybe Throws)
- Hydra.Dsl.Java.Syntax: methodHeaderWithDeclarator :: TypedTerm MethodHeader -> TypedTerm MethodDeclarator -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodHeaderWithParameters :: TypedTerm MethodHeader -> TypedTerm [TypeParameter] -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodHeaderWithResult :: TypedTerm MethodHeader -> TypedTerm Result -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodHeaderWithThrows :: TypedTerm MethodHeader -> TypedTerm (Maybe Throws) -> TypedTerm MethodHeader
- Hydra.Dsl.Java.Syntax: methodInvocation :: TypedTerm MethodInvocation_Header -> TypedTerm [Expression] -> TypedTerm MethodInvocation
- Hydra.Dsl.Java.Syntax: methodInvocationArguments :: TypedTerm MethodInvocation -> TypedTerm [Expression]
- Hydra.Dsl.Java.Syntax: methodInvocationHeader :: TypedTerm MethodInvocation -> TypedTerm MethodInvocation_Header
- Hydra.Dsl.Java.Syntax: methodInvocationMethodInvocation :: TypedName MethodInvocation
- Hydra.Dsl.Java.Syntax: methodInvocationWithArguments :: TypedTerm MethodInvocation -> TypedTerm [Expression] -> TypedTerm MethodInvocation
- Hydra.Dsl.Java.Syntax: methodInvocationWithHeader :: TypedTerm MethodInvocation -> TypedTerm MethodInvocation_Header -> TypedTerm MethodInvocation
- Hydra.Dsl.Java.Syntax: methodInvocation_Complex :: TypedTerm MethodInvocation_Variant -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodInvocation_Complex
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexIdentifier :: TypedTerm MethodInvocation_Complex -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexMethodInvocation_Complex :: TypedName MethodInvocation_Complex
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexTypeArguments :: TypedTerm MethodInvocation_Complex -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexVariant :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexWithIdentifier :: TypedTerm MethodInvocation_Complex -> TypedTerm Identifier -> TypedTerm MethodInvocation_Complex
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexWithTypeArguments :: TypedTerm MethodInvocation_Complex -> TypedTerm [TypeArgument] -> TypedTerm MethodInvocation_Complex
- Hydra.Dsl.Java.Syntax: methodInvocation_ComplexWithVariant :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Variant -> TypedTerm MethodInvocation_Complex
- Hydra.Dsl.Java.Syntax: methodInvocation_HeaderComplex :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Header
- Hydra.Dsl.Java.Syntax: methodInvocation_HeaderMethodInvocation_Header :: TypedName MethodInvocation_Header
- Hydra.Dsl.Java.Syntax: methodInvocation_HeaderSimple :: TypedTerm MethodName -> TypedTerm MethodInvocation_Header
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantExpression :: TypedTerm ExpressionName -> TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantMethodInvocation_Variant :: TypedName MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantPrimary :: TypedTerm Primary -> TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantSuper :: TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantType :: TypedTerm TypeName -> TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodInvocation_VariantTypeSuper :: TypedTerm TypeName -> TypedTerm MethodInvocation_Variant
- Hydra.Dsl.Java.Syntax: methodModifierAbstract :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierAnnotation :: TypedTerm Annotation -> TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierFinal :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierMethodModifier :: TypedName MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierNative :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierPrivate :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierProtected :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierPublic :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierStatic :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierStrictfp :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodModifierSynchronized :: TypedTerm MethodModifier
- Hydra.Dsl.Java.Syntax: methodName :: TypedTerm Identifier -> TypedTerm MethodName
- Hydra.Dsl.Java.Syntax: methodNameMethodName :: TypedName MethodName
- Hydra.Dsl.Java.Syntax: methodReferenceArray :: TypedTerm MethodReference_Array -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReferenceExpression :: TypedTerm MethodReference_Expression -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReferenceMethodReference :: TypedName MethodReference
- Hydra.Dsl.Java.Syntax: methodReferenceNew :: TypedTerm MethodReference_New -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReferencePrimary :: TypedTerm MethodReference_Primary -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReferenceReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReferenceSuper :: TypedTerm MethodReference_Super -> TypedTerm MethodReference
- Hydra.Dsl.Java.Syntax: methodReference_Array :: TypedTerm ArrayType -> TypedTerm MethodReference_Array
- Hydra.Dsl.Java.Syntax: methodReference_ArrayMethodReference_Array :: TypedName MethodReference_Array
- Hydra.Dsl.Java.Syntax: methodReference_Expression :: TypedTerm ExpressionName -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_Expression
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionIdentifier :: TypedTerm MethodReference_Expression -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionMethodReference_Expression :: TypedName MethodReference_Expression
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionName :: TypedTerm MethodReference_Expression -> TypedTerm ExpressionName
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionTypeArguments :: TypedTerm MethodReference_Expression -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionWithIdentifier :: TypedTerm MethodReference_Expression -> TypedTerm Identifier -> TypedTerm MethodReference_Expression
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionWithName :: TypedTerm MethodReference_Expression -> TypedTerm ExpressionName -> TypedTerm MethodReference_Expression
- Hydra.Dsl.Java.Syntax: methodReference_ExpressionWithTypeArguments :: TypedTerm MethodReference_Expression -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Expression
- Hydra.Dsl.Java.Syntax: methodReference_New :: TypedTerm ClassType -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_New
- Hydra.Dsl.Java.Syntax: methodReference_NewClassType :: TypedTerm MethodReference_New -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: methodReference_NewMethodReference_New :: TypedName MethodReference_New
- Hydra.Dsl.Java.Syntax: methodReference_NewTypeArguments :: TypedTerm MethodReference_New -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodReference_NewWithClassType :: TypedTerm MethodReference_New -> TypedTerm ClassType -> TypedTerm MethodReference_New
- Hydra.Dsl.Java.Syntax: methodReference_NewWithTypeArguments :: TypedTerm MethodReference_New -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_New
- Hydra.Dsl.Java.Syntax: methodReference_Primary :: TypedTerm Primary -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_Primary
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryIdentifier :: TypedTerm MethodReference_Primary -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryMethodReference_Primary :: TypedName MethodReference_Primary
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryPrimary :: TypedTerm MethodReference_Primary -> TypedTerm Primary
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryTypeArguments :: TypedTerm MethodReference_Primary -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryWithIdentifier :: TypedTerm MethodReference_Primary -> TypedTerm Identifier -> TypedTerm MethodReference_Primary
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryWithPrimary :: TypedTerm MethodReference_Primary -> TypedTerm Primary -> TypedTerm MethodReference_Primary
- Hydra.Dsl.Java.Syntax: methodReference_PrimaryWithTypeArguments :: TypedTerm MethodReference_Primary -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Primary
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceType :: TypedTerm ReferenceType -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeIdentifier :: TypedTerm MethodReference_ReferenceType -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeMethodReference_ReferenceType :: TypedName MethodReference_ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeTypeArguments :: TypedTerm MethodReference_ReferenceType -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeWithIdentifier :: TypedTerm MethodReference_ReferenceType -> TypedTerm Identifier -> TypedTerm MethodReference_ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeWithReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm ReferenceType -> TypedTerm MethodReference_ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_ReferenceTypeWithTypeArguments :: TypedTerm MethodReference_ReferenceType -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_ReferenceType
- Hydra.Dsl.Java.Syntax: methodReference_Super :: TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm Bool -> TypedTerm MethodReference_Super
- Hydra.Dsl.Java.Syntax: methodReference_SuperIdentifier :: TypedTerm MethodReference_Super -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: methodReference_SuperMethodReference_Super :: TypedName MethodReference_Super
- Hydra.Dsl.Java.Syntax: methodReference_SuperSuper :: TypedTerm MethodReference_Super -> TypedTerm Bool
- Hydra.Dsl.Java.Syntax: methodReference_SuperTypeArguments :: TypedTerm MethodReference_Super -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: methodReference_SuperWithIdentifier :: TypedTerm MethodReference_Super -> TypedTerm Identifier -> TypedTerm MethodReference_Super
- Hydra.Dsl.Java.Syntax: methodReference_SuperWithSuper :: TypedTerm MethodReference_Super -> TypedTerm Bool -> TypedTerm MethodReference_Super
- Hydra.Dsl.Java.Syntax: methodReference_SuperWithTypeArguments :: TypedTerm MethodReference_Super -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Super
- Hydra.Dsl.Java.Syntax: modularCompilationUnit :: TypedTerm [ImportDeclaration] -> TypedTerm ModuleDeclaration -> TypedTerm ModularCompilationUnit
- Hydra.Dsl.Java.Syntax: modularCompilationUnitImports :: TypedTerm ModularCompilationUnit -> TypedTerm [ImportDeclaration]
- Hydra.Dsl.Java.Syntax: modularCompilationUnitModularCompilationUnit :: TypedName ModularCompilationUnit
- Hydra.Dsl.Java.Syntax: modularCompilationUnitModule :: TypedTerm ModularCompilationUnit -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: modularCompilationUnitWithImports :: TypedTerm ModularCompilationUnit -> TypedTerm [ImportDeclaration] -> TypedTerm ModularCompilationUnit
- Hydra.Dsl.Java.Syntax: modularCompilationUnitWithModule :: TypedTerm ModularCompilationUnit -> TypedTerm ModuleDeclaration -> TypedTerm ModularCompilationUnit
- Hydra.Dsl.Java.Syntax: moduleDeclaration :: TypedTerm [Annotation] -> TypedTerm Bool -> TypedTerm [Identifier] -> TypedTerm [ModuleDirective] -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDeclarationAnnotations :: TypedTerm ModuleDeclaration -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: moduleDeclarationDirectives :: TypedTerm ModuleDeclaration -> TypedTerm [ModuleDirective]
- Hydra.Dsl.Java.Syntax: moduleDeclarationIdentifiers :: TypedTerm ModuleDeclaration -> TypedTerm [Identifier]
- Hydra.Dsl.Java.Syntax: moduleDeclarationModuleDeclaration :: TypedName ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDeclarationOpen :: TypedTerm ModuleDeclaration -> TypedTerm Bool
- Hydra.Dsl.Java.Syntax: moduleDeclarationWithAnnotations :: TypedTerm ModuleDeclaration -> TypedTerm [Annotation] -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDeclarationWithDirectives :: TypedTerm ModuleDeclaration -> TypedTerm [ModuleDirective] -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDeclarationWithIdentifiers :: TypedTerm ModuleDeclaration -> TypedTerm [Identifier] -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDeclarationWithOpen :: TypedTerm ModuleDeclaration -> TypedTerm Bool -> TypedTerm ModuleDeclaration
- Hydra.Dsl.Java.Syntax: moduleDirectiveExports :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirectiveModuleDirective :: TypedName ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirectiveOpens :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirectiveProvides :: TypedTerm ModuleDirective_Provides -> TypedTerm ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirectiveRequires :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirectiveUses :: TypedTerm TypeName -> TypedTerm ModuleDirective
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpens :: TypedTerm PackageName -> TypedTerm [ModuleName] -> TypedTerm ModuleDirective_ExportsOrOpens
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens :: TypedName ModuleDirective_ExportsOrOpens
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpensModules :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm [ModuleName]
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpensPackage :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm PackageName
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpensWithModules :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm [ModuleName] -> TypedTerm ModuleDirective_ExportsOrOpens
- Hydra.Dsl.Java.Syntax: moduleDirective_ExportsOrOpensWithPackage :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm PackageName -> TypedTerm ModuleDirective_ExportsOrOpens
- Hydra.Dsl.Java.Syntax: moduleDirective_Provides :: TypedTerm TypeName -> TypedTerm [TypeName] -> TypedTerm ModuleDirective_Provides
- Hydra.Dsl.Java.Syntax: moduleDirective_ProvidesModuleDirective_Provides :: TypedName ModuleDirective_Provides
- Hydra.Dsl.Java.Syntax: moduleDirective_ProvidesTo :: TypedTerm ModuleDirective_Provides -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: moduleDirective_ProvidesWith :: TypedTerm ModuleDirective_Provides -> TypedTerm [TypeName]
- Hydra.Dsl.Java.Syntax: moduleDirective_ProvidesWithTo :: TypedTerm ModuleDirective_Provides -> TypedTerm TypeName -> TypedTerm ModuleDirective_Provides
- Hydra.Dsl.Java.Syntax: moduleDirective_ProvidesWithWith :: TypedTerm ModuleDirective_Provides -> TypedTerm [TypeName] -> TypedTerm ModuleDirective_Provides
- Hydra.Dsl.Java.Syntax: moduleDirective_Requires :: TypedTerm [RequiresModifier] -> TypedTerm ModuleName -> TypedTerm ModuleDirective_Requires
- Hydra.Dsl.Java.Syntax: moduleDirective_RequiresModifiers :: TypedTerm ModuleDirective_Requires -> TypedTerm [RequiresModifier]
- Hydra.Dsl.Java.Syntax: moduleDirective_RequiresModule :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleName
- Hydra.Dsl.Java.Syntax: moduleDirective_RequiresModuleDirective_Requires :: TypedName ModuleDirective_Requires
- Hydra.Dsl.Java.Syntax: moduleDirective_RequiresWithModifiers :: TypedTerm ModuleDirective_Requires -> TypedTerm [RequiresModifier] -> TypedTerm ModuleDirective_Requires
- Hydra.Dsl.Java.Syntax: moduleDirective_RequiresWithModule :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleName -> TypedTerm ModuleDirective_Requires
- Hydra.Dsl.Java.Syntax: moduleName :: TypedTerm Identifier -> TypedTerm (Maybe ModuleName) -> TypedTerm ModuleName
- Hydra.Dsl.Java.Syntax: moduleNameIdentifier :: TypedTerm ModuleName -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: moduleNameModuleName :: TypedName ModuleName
- Hydra.Dsl.Java.Syntax: moduleNameName :: TypedTerm ModuleName -> TypedTerm (Maybe ModuleName)
- Hydra.Dsl.Java.Syntax: moduleNameWithIdentifier :: TypedTerm ModuleName -> TypedTerm Identifier -> TypedTerm ModuleName
- Hydra.Dsl.Java.Syntax: moduleNameWithName :: TypedTerm ModuleName -> TypedTerm (Maybe ModuleName) -> TypedTerm ModuleName
- Hydra.Dsl.Java.Syntax: multiplicativeExpressionDivide :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpressionMod :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpressionMultiplicativeExpression :: TypedName MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpressionTimes :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpressionUnary :: TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_Binary :: TypedTerm MultiplicativeExpression -> TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression_Binary
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_BinaryLhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_BinaryMultiplicativeExpression_Binary :: TypedName MultiplicativeExpression_Binary
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_BinaryRhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_BinaryWithLhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression -> TypedTerm MultiplicativeExpression_Binary
- Hydra.Dsl.Java.Syntax: multiplicativeExpression_BinaryWithRhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression_Binary
- Hydra.Dsl.Java.Syntax: normalAnnotation :: TypedTerm TypeName -> TypedTerm [ElementValuePair] -> TypedTerm NormalAnnotation
- Hydra.Dsl.Java.Syntax: normalAnnotationNormalAnnotation :: TypedName NormalAnnotation
- Hydra.Dsl.Java.Syntax: normalAnnotationPairs :: TypedTerm NormalAnnotation -> TypedTerm [ElementValuePair]
- Hydra.Dsl.Java.Syntax: normalAnnotationTypeName :: TypedTerm NormalAnnotation -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: normalAnnotationWithPairs :: TypedTerm NormalAnnotation -> TypedTerm [ElementValuePair] -> TypedTerm NormalAnnotation
- Hydra.Dsl.Java.Syntax: normalAnnotationWithTypeName :: TypedTerm NormalAnnotation -> TypedTerm TypeName -> TypedTerm NormalAnnotation
- Hydra.Dsl.Java.Syntax: normalClassDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm (Maybe ClassType) -> TypedTerm [InterfaceType] -> TypedTerm [TypeName] -> TypedTerm ClassBody -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationBody :: TypedTerm NormalClassDeclaration -> TypedTerm ClassBody
- Hydra.Dsl.Java.Syntax: normalClassDeclarationExtends :: TypedTerm NormalClassDeclaration -> TypedTerm (Maybe ClassType)
- Hydra.Dsl.Java.Syntax: normalClassDeclarationIdentifier :: TypedTerm NormalClassDeclaration -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: normalClassDeclarationImplements :: TypedTerm NormalClassDeclaration -> TypedTerm [InterfaceType]
- Hydra.Dsl.Java.Syntax: normalClassDeclarationModifiers :: TypedTerm NormalClassDeclaration -> TypedTerm [ClassModifier]
- Hydra.Dsl.Java.Syntax: normalClassDeclarationNormalClassDeclaration :: TypedName NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationParameters :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.Java.Syntax: normalClassDeclarationPermits :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeName]
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithBody :: TypedTerm NormalClassDeclaration -> TypedTerm ClassBody -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithExtends :: TypedTerm NormalClassDeclaration -> TypedTerm (Maybe ClassType) -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithIdentifier :: TypedTerm NormalClassDeclaration -> TypedTerm TypeIdentifier -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithImplements :: TypedTerm NormalClassDeclaration -> TypedTerm [InterfaceType] -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithModifiers :: TypedTerm NormalClassDeclaration -> TypedTerm [ClassModifier] -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithParameters :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeParameter] -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalClassDeclarationWithPermits :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeName] -> TypedTerm NormalClassDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclaration :: TypedTerm [InterfaceModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm [InterfaceType] -> TypedTerm [TypeName] -> TypedTerm InterfaceBody -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationBody :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceBody
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationExtends :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceType]
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationIdentifier :: TypedTerm NormalInterfaceDeclaration -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationModifiers :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceModifier]
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationNormalInterfaceDeclaration :: TypedName NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationParameters :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationPermits :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeName]
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithBody :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceBody -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithExtends :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceType] -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithIdentifier :: TypedTerm NormalInterfaceDeclaration -> TypedTerm TypeIdentifier -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithModifiers :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceModifier] -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithParameters :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: normalInterfaceDeclarationWithPermits :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeName] -> TypedTerm NormalInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: numericTypeArrayArray :: TypedTerm NumericTypeArray -> TypedTerm NumericTypeArray
- Hydra.Dsl.Java.Syntax: numericTypeArrayNumericTypeArray :: TypedName NumericTypeArray
- Hydra.Dsl.Java.Syntax: numericTypeArraySimple :: TypedTerm NumericType -> TypedTerm NumericTypeArray
- Hydra.Dsl.Java.Syntax: numericTypeFloatingPoint :: TypedTerm FloatingPointType -> TypedTerm NumericType
- Hydra.Dsl.Java.Syntax: numericTypeIntegral :: TypedTerm IntegralType -> TypedTerm NumericType
- Hydra.Dsl.Java.Syntax: numericTypeNumericType :: TypedName NumericType
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnit :: TypedTerm (Maybe PackageDeclaration) -> TypedTerm [ImportDeclaration] -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments] -> TypedTerm OrdinaryCompilationUnit
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitImports :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [ImportDeclaration]
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitOrdinaryCompilationUnit :: TypedName OrdinaryCompilationUnit
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitPackage :: TypedTerm OrdinaryCompilationUnit -> TypedTerm (Maybe PackageDeclaration)
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitTypes :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments]
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitWithImports :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [ImportDeclaration] -> TypedTerm OrdinaryCompilationUnit
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitWithPackage :: TypedTerm OrdinaryCompilationUnit -> TypedTerm (Maybe PackageDeclaration) -> TypedTerm OrdinaryCompilationUnit
- Hydra.Dsl.Java.Syntax: ordinaryCompilationUnitWithTypes :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments] -> TypedTerm OrdinaryCompilationUnit
- Hydra.Dsl.Java.Syntax: packageDeclaration :: TypedTerm [PackageModifier] -> TypedTerm [Identifier] -> TypedTerm PackageDeclaration
- Hydra.Dsl.Java.Syntax: packageDeclarationIdentifiers :: TypedTerm PackageDeclaration -> TypedTerm [Identifier]
- Hydra.Dsl.Java.Syntax: packageDeclarationModifiers :: TypedTerm PackageDeclaration -> TypedTerm [PackageModifier]
- Hydra.Dsl.Java.Syntax: packageDeclarationPackageDeclaration :: TypedName PackageDeclaration
- Hydra.Dsl.Java.Syntax: packageDeclarationWithIdentifiers :: TypedTerm PackageDeclaration -> TypedTerm [Identifier] -> TypedTerm PackageDeclaration
- Hydra.Dsl.Java.Syntax: packageDeclarationWithModifiers :: TypedTerm PackageDeclaration -> TypedTerm [PackageModifier] -> TypedTerm PackageDeclaration
- Hydra.Dsl.Java.Syntax: packageModifier :: TypedTerm Annotation -> TypedTerm PackageModifier
- Hydra.Dsl.Java.Syntax: packageModifierPackageModifier :: TypedName PackageModifier
- Hydra.Dsl.Java.Syntax: packageName :: TypedTerm [Identifier] -> TypedTerm PackageName
- Hydra.Dsl.Java.Syntax: packageNamePackageName :: TypedName PackageName
- Hydra.Dsl.Java.Syntax: packageOrTypeName :: TypedTerm [Identifier] -> TypedTerm PackageOrTypeName
- Hydra.Dsl.Java.Syntax: packageOrTypeNamePackageOrTypeName :: TypedName PackageOrTypeName
- Hydra.Dsl.Java.Syntax: patternPattern :: TypedName Pattern
- Hydra.Dsl.Java.Syntax: patternRecord :: TypedTerm RecordPattern -> TypedTerm Pattern
- Hydra.Dsl.Java.Syntax: patternType :: TypedTerm TypePattern -> TypedTerm Pattern
- Hydra.Dsl.Java.Syntax: postDecrementExpression :: TypedTerm PostfixExpression -> TypedTerm PostDecrementExpression
- Hydra.Dsl.Java.Syntax: postDecrementExpressionPostDecrementExpression :: TypedName PostDecrementExpression
- Hydra.Dsl.Java.Syntax: postIncrementExpression :: TypedTerm PostfixExpression -> TypedTerm PostIncrementExpression
- Hydra.Dsl.Java.Syntax: postIncrementExpressionPostIncrementExpression :: TypedName PostIncrementExpression
- Hydra.Dsl.Java.Syntax: postfixExpressionName :: TypedTerm ExpressionName -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: postfixExpressionPostDecrement :: TypedTerm PostDecrementExpression -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: postfixExpressionPostIncrement :: TypedTerm PostIncrementExpression -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: postfixExpressionPostfixExpression :: TypedName PostfixExpression
- Hydra.Dsl.Java.Syntax: postfixExpressionPrimary :: TypedTerm Primary -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: preDecrementExpression :: TypedTerm UnaryExpression -> TypedTerm PreDecrementExpression
- Hydra.Dsl.Java.Syntax: preDecrementExpressionPreDecrementExpression :: TypedName PreDecrementExpression
- Hydra.Dsl.Java.Syntax: preIncrementExpression :: TypedTerm UnaryExpression -> TypedTerm PreIncrementExpression
- Hydra.Dsl.Java.Syntax: preIncrementExpressionPreIncrementExpression :: TypedName PreIncrementExpression
- Hydra.Dsl.Java.Syntax: primaryArrayCreation :: TypedTerm ArrayCreationExpression -> TypedTerm Primary
- Hydra.Dsl.Java.Syntax: primaryNoNewArray :: TypedTerm PrimaryNoNewArrayExpression -> TypedTerm Primary
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionArrayAccess :: TypedTerm ArrayAccess -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionClassInstance :: TypedTerm ClassInstanceCreationExpression -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionClassLiteral :: TypedTerm ClassLiteral -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionDotThis :: TypedTerm TypeName -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionFieldAccess :: TypedTerm FieldAccess -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionLiteral :: TypedTerm Literal -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionMethodInvocation :: TypedTerm MethodInvocation -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionMethodReference :: TypedTerm MethodReference -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionParens :: TypedTerm Expression -> TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionPrimaryNoNewArrayExpression :: TypedName PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryNoNewArrayExpressionThis :: TypedTerm PrimaryNoNewArrayExpression
- Hydra.Dsl.Java.Syntax: primaryPrimary :: TypedName Primary
- Hydra.Dsl.Java.Syntax: primitiveTypeBoolean :: TypedTerm PrimitiveType
- Hydra.Dsl.Java.Syntax: primitiveTypeNumeric :: TypedTerm NumericType -> TypedTerm PrimitiveType
- Hydra.Dsl.Java.Syntax: primitiveTypePrimitiveType :: TypedName PrimitiveType
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotations :: TypedTerm PrimitiveType -> TypedTerm [Annotation] -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotationsAnnotations :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations :: TypedName PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotationsType :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm PrimitiveType
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotationsWithAnnotations :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Annotation] -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: primitiveTypeWithAnnotationsWithType :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm PrimitiveType -> TypedTerm PrimitiveTypeWithAnnotations
- Hydra.Dsl.Java.Syntax: receiverParameter :: TypedTerm [Annotation] -> TypedTerm UnannType -> TypedTerm (Maybe Identifier) -> TypedTerm ReceiverParameter
- Hydra.Dsl.Java.Syntax: receiverParameterAnnotations :: TypedTerm ReceiverParameter -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: receiverParameterIdentifier :: TypedTerm ReceiverParameter -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.Java.Syntax: receiverParameterReceiverParameter :: TypedName ReceiverParameter
- Hydra.Dsl.Java.Syntax: receiverParameterUnannType :: TypedTerm ReceiverParameter -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: receiverParameterWithAnnotations :: TypedTerm ReceiverParameter -> TypedTerm [Annotation] -> TypedTerm ReceiverParameter
- Hydra.Dsl.Java.Syntax: receiverParameterWithIdentifier :: TypedTerm ReceiverParameter -> TypedTerm (Maybe Identifier) -> TypedTerm ReceiverParameter
- Hydra.Dsl.Java.Syntax: receiverParameterWithUnannType :: TypedTerm ReceiverParameter -> TypedTerm UnannType -> TypedTerm ReceiverParameter
- Hydra.Dsl.Java.Syntax: recordBody :: TypedTerm [RecordBodyDeclaration] -> TypedTerm RecordBody
- Hydra.Dsl.Java.Syntax: recordBodyDeclarationClassBody :: TypedTerm ClassBodyDeclaration -> TypedTerm RecordBodyDeclaration
- Hydra.Dsl.Java.Syntax: recordBodyDeclarationCompactConstructor :: TypedTerm CompactConstructorDeclaration -> TypedTerm RecordBodyDeclaration
- Hydra.Dsl.Java.Syntax: recordBodyDeclarationRecordBodyDeclaration :: TypedName RecordBodyDeclaration
- Hydra.Dsl.Java.Syntax: recordBodyRecordBody :: TypedName RecordBody
- Hydra.Dsl.Java.Syntax: recordComponentModifier :: TypedTerm Annotation -> TypedTerm RecordComponentModifier
- Hydra.Dsl.Java.Syntax: recordComponentModifierRecordComponentModifier :: TypedName RecordComponentModifier
- Hydra.Dsl.Java.Syntax: recordComponentRecordComponent :: TypedName RecordComponent
- Hydra.Dsl.Java.Syntax: recordComponentSimple :: TypedTerm RecordComponent_Simple -> TypedTerm RecordComponent
- Hydra.Dsl.Java.Syntax: recordComponentVariableArity :: TypedTerm VariableArityRecordComponent -> TypedTerm RecordComponent
- Hydra.Dsl.Java.Syntax: recordComponent_Simple :: TypedTerm [RecordComponentModifier] -> TypedTerm UnannType -> TypedTerm Identifier -> TypedTerm RecordComponent_Simple
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleIdentifier :: TypedTerm RecordComponent_Simple -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleModifiers :: TypedTerm RecordComponent_Simple -> TypedTerm [RecordComponentModifier]
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleRecordComponent_Simple :: TypedName RecordComponent_Simple
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleType :: TypedTerm RecordComponent_Simple -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleWithIdentifier :: TypedTerm RecordComponent_Simple -> TypedTerm Identifier -> TypedTerm RecordComponent_Simple
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleWithModifiers :: TypedTerm RecordComponent_Simple -> TypedTerm [RecordComponentModifier] -> TypedTerm RecordComponent_Simple
- Hydra.Dsl.Java.Syntax: recordComponent_SimpleWithType :: TypedTerm RecordComponent_Simple -> TypedTerm UnannType -> TypedTerm RecordComponent_Simple
- Hydra.Dsl.Java.Syntax: recordDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm RecordHeader -> TypedTerm [InterfaceType] -> TypedTerm RecordBody -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationBody :: TypedTerm RecordDeclaration -> TypedTerm RecordBody
- Hydra.Dsl.Java.Syntax: recordDeclarationHeader :: TypedTerm RecordDeclaration -> TypedTerm RecordHeader
- Hydra.Dsl.Java.Syntax: recordDeclarationIdentifier :: TypedTerm RecordDeclaration -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: recordDeclarationImplements :: TypedTerm RecordDeclaration -> TypedTerm [InterfaceType]
- Hydra.Dsl.Java.Syntax: recordDeclarationModifiers :: TypedTerm RecordDeclaration -> TypedTerm [ClassModifier]
- Hydra.Dsl.Java.Syntax: recordDeclarationParameters :: TypedTerm RecordDeclaration -> TypedTerm [TypeParameter]
- Hydra.Dsl.Java.Syntax: recordDeclarationRecordDeclaration :: TypedName RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithBody :: TypedTerm RecordDeclaration -> TypedTerm RecordBody -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithHeader :: TypedTerm RecordDeclaration -> TypedTerm RecordHeader -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithIdentifier :: TypedTerm RecordDeclaration -> TypedTerm TypeIdentifier -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithImplements :: TypedTerm RecordDeclaration -> TypedTerm [InterfaceType] -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithModifiers :: TypedTerm RecordDeclaration -> TypedTerm [ClassModifier] -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordDeclarationWithParameters :: TypedTerm RecordDeclaration -> TypedTerm [TypeParameter] -> TypedTerm RecordDeclaration
- Hydra.Dsl.Java.Syntax: recordHeader :: TypedTerm [RecordComponent] -> TypedTerm RecordHeader
- Hydra.Dsl.Java.Syntax: recordHeaderRecordHeader :: TypedName RecordHeader
- Hydra.Dsl.Java.Syntax: recordPattern :: TypedTerm ReferenceType -> TypedTerm [Pattern] -> TypedTerm RecordPattern
- Hydra.Dsl.Java.Syntax: recordPatternPatterns :: TypedTerm RecordPattern -> TypedTerm [Pattern]
- Hydra.Dsl.Java.Syntax: recordPatternRecordPattern :: TypedName RecordPattern
- Hydra.Dsl.Java.Syntax: recordPatternType :: TypedTerm RecordPattern -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: recordPatternWithPatterns :: TypedTerm RecordPattern -> TypedTerm [Pattern] -> TypedTerm RecordPattern
- Hydra.Dsl.Java.Syntax: recordPatternWithType :: TypedTerm RecordPattern -> TypedTerm ReferenceType -> TypedTerm RecordPattern
- Hydra.Dsl.Java.Syntax: referenceTypeArray :: TypedTerm ArrayType -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: referenceTypeClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: referenceTypeReferenceType :: TypedName ReferenceType
- Hydra.Dsl.Java.Syntax: referenceTypeVariable :: TypedTerm TypeVariable -> TypedTerm ReferenceType
- Hydra.Dsl.Java.Syntax: relationalExpressionGreaterThan :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionGreaterThanEqual :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionInstanceofExpression :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionLessThan :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionLessThanEqual :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionRelationalExpression :: TypedName RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpressionSimple :: TypedTerm ShiftExpression -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThan :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThan
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqual :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqualLhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual :: TypedName RelationalExpression_GreaterThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqualRhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqualWithLhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_GreaterThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanEqualWithRhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanLhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanRelationalExpression_GreaterThan :: TypedName RelationalExpression_GreaterThan
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanRhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanWithLhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_GreaterThan
- Hydra.Dsl.Java.Syntax: relationalExpression_GreaterThanWithRhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThan
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThan :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThan
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqual :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqualLhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqualRelationalExpression_LessThanEqual :: TypedName RelationalExpression_LessThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqualRhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqualWithLhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_LessThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanEqualWithRhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThanEqual
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanLhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanRelationalExpression_LessThan :: TypedName RelationalExpression_LessThan
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanRhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanWithLhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_LessThan
- Hydra.Dsl.Java.Syntax: relationalExpression_LessThanWithRhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThan
- Hydra.Dsl.Java.Syntax: requiresModifierRequiresModifier :: TypedName RequiresModifier
- Hydra.Dsl.Java.Syntax: requiresModifierStatic :: TypedTerm RequiresModifier
- Hydra.Dsl.Java.Syntax: requiresModifierTransitive :: TypedTerm RequiresModifier
- Hydra.Dsl.Java.Syntax: resourceLocal :: TypedTerm Resource_Local -> TypedTerm Resource
- Hydra.Dsl.Java.Syntax: resourceResource :: TypedName Resource
- Hydra.Dsl.Java.Syntax: resourceSpecification :: TypedTerm [Resource] -> TypedTerm ResourceSpecification
- Hydra.Dsl.Java.Syntax: resourceSpecificationResourceSpecification :: TypedName ResourceSpecification
- Hydra.Dsl.Java.Syntax: resourceVariable :: TypedTerm VariableAccess -> TypedTerm Resource
- Hydra.Dsl.Java.Syntax: resource_Local :: TypedTerm [VariableModifier] -> TypedTerm LocalVariableType -> TypedTerm Identifier -> TypedTerm Expression -> TypedTerm Resource_Local
- Hydra.Dsl.Java.Syntax: resource_LocalExpression :: TypedTerm Resource_Local -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: resource_LocalIdentifier :: TypedTerm Resource_Local -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: resource_LocalModifiers :: TypedTerm Resource_Local -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: resource_LocalResource_Local :: TypedName Resource_Local
- Hydra.Dsl.Java.Syntax: resource_LocalType :: TypedTerm Resource_Local -> TypedTerm LocalVariableType
- Hydra.Dsl.Java.Syntax: resource_LocalWithExpression :: TypedTerm Resource_Local -> TypedTerm Expression -> TypedTerm Resource_Local
- Hydra.Dsl.Java.Syntax: resource_LocalWithIdentifier :: TypedTerm Resource_Local -> TypedTerm Identifier -> TypedTerm Resource_Local
- Hydra.Dsl.Java.Syntax: resource_LocalWithModifiers :: TypedTerm Resource_Local -> TypedTerm [VariableModifier] -> TypedTerm Resource_Local
- Hydra.Dsl.Java.Syntax: resource_LocalWithType :: TypedTerm Resource_Local -> TypedTerm LocalVariableType -> TypedTerm Resource_Local
- Hydra.Dsl.Java.Syntax: resultResult :: TypedName Result
- Hydra.Dsl.Java.Syntax: resultType :: TypedTerm UnannType -> TypedTerm Result
- Hydra.Dsl.Java.Syntax: resultVoid :: TypedTerm Result
- Hydra.Dsl.Java.Syntax: returnStatement :: TypedTerm (Maybe Expression) -> TypedTerm ReturnStatement
- Hydra.Dsl.Java.Syntax: returnStatementReturnStatement :: TypedName ReturnStatement
- Hydra.Dsl.Java.Syntax: shiftExpressionShiftExpression :: TypedName ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpressionShiftLeft :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpressionShiftRight :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpressionShiftRightZeroFill :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpressionUnary :: TypedTerm AdditiveExpression -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpression_Binary :: TypedTerm ShiftExpression -> TypedTerm AdditiveExpression -> TypedTerm ShiftExpression_Binary
- Hydra.Dsl.Java.Syntax: shiftExpression_BinaryLhs :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
- Hydra.Dsl.Java.Syntax: shiftExpression_BinaryRhs :: TypedTerm ShiftExpression_Binary -> TypedTerm AdditiveExpression
- Hydra.Dsl.Java.Syntax: shiftExpression_BinaryShiftExpression_Binary :: TypedName ShiftExpression_Binary
- Hydra.Dsl.Java.Syntax: shiftExpression_BinaryWithLhs :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression -> TypedTerm ShiftExpression_Binary
- Hydra.Dsl.Java.Syntax: shiftExpression_BinaryWithRhs :: TypedTerm ShiftExpression_Binary -> TypedTerm AdditiveExpression -> TypedTerm ShiftExpression_Binary
- Hydra.Dsl.Java.Syntax: simpleTypeName :: TypedTerm TypeIdentifier -> TypedTerm SimpleTypeName
- Hydra.Dsl.Java.Syntax: simpleTypeNameSimpleTypeName :: TypedName SimpleTypeName
- Hydra.Dsl.Java.Syntax: singleElementAnnotation :: TypedTerm TypeName -> TypedTerm (Maybe ElementValue) -> TypedTerm SingleElementAnnotation
- Hydra.Dsl.Java.Syntax: singleElementAnnotationName :: TypedTerm SingleElementAnnotation -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: singleElementAnnotationSingleElementAnnotation :: TypedName SingleElementAnnotation
- Hydra.Dsl.Java.Syntax: singleElementAnnotationValue :: TypedTerm SingleElementAnnotation -> TypedTerm (Maybe ElementValue)
- Hydra.Dsl.Java.Syntax: singleElementAnnotationWithName :: TypedTerm SingleElementAnnotation -> TypedTerm TypeName -> TypedTerm SingleElementAnnotation
- Hydra.Dsl.Java.Syntax: singleElementAnnotationWithValue :: TypedTerm SingleElementAnnotation -> TypedTerm (Maybe ElementValue) -> TypedTerm SingleElementAnnotation
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclaration :: TypedTerm TypeName -> TypedTerm Identifier -> TypedTerm SingleStaticImportDeclaration
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclarationIdentifier :: TypedTerm SingleStaticImportDeclaration -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclarationSingleStaticImportDeclaration :: TypedName SingleStaticImportDeclaration
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclarationTypeName :: TypedTerm SingleStaticImportDeclaration -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclarationWithIdentifier :: TypedTerm SingleStaticImportDeclaration -> TypedTerm Identifier -> TypedTerm SingleStaticImportDeclaration
- Hydra.Dsl.Java.Syntax: singleStaticImportDeclarationWithTypeName :: TypedTerm SingleStaticImportDeclaration -> TypedTerm TypeName -> TypedTerm SingleStaticImportDeclaration
- Hydra.Dsl.Java.Syntax: singleTypeImportDeclaration :: TypedTerm TypeName -> TypedTerm SingleTypeImportDeclaration
- Hydra.Dsl.Java.Syntax: singleTypeImportDeclarationSingleTypeImportDeclaration :: TypedName SingleTypeImportDeclaration
- Hydra.Dsl.Java.Syntax: statementExpressionAssignment :: TypedTerm Assignment -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionClassInstanceCreation :: TypedTerm ClassInstanceCreationExpression -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionMethodInvocation :: TypedTerm MethodInvocation -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionPostDecrement :: TypedTerm PostDecrementExpression -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionPostIncrement :: TypedTerm PostIncrementExpression -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionPreDecrement :: TypedTerm PreDecrementExpression -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionPreIncrement :: TypedTerm PreIncrementExpression -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: statementExpressionStatementExpression :: TypedName StatementExpression
- Hydra.Dsl.Java.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementIfThen :: TypedTerm IfThenStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementIfThenElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementNoShortIfFor :: TypedTerm ForStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementNoShortIfIfThenElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementNoShortIfLabeled :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementNoShortIfStatementNoShortIf :: TypedName StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementNoShortIfWhile :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementNoShortIfWithoutTrailing :: TypedTerm StatementWithoutTrailingSubstatement -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: statementStatement :: TypedName Statement
- Hydra.Dsl.Java.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailing :: TypedTerm StatementWithoutTrailingSubstatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementAssert :: TypedTerm AssertStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementBlock :: TypedTerm Block -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementBreak :: TypedTerm BreakStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementContinue :: TypedTerm ContinueStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementDo :: TypedTerm DoStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementEmpty :: TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementExpression :: TypedTerm ExpressionStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementReturn :: TypedTerm ReturnStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement :: TypedName StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementSwitch :: TypedTerm SwitchStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementSynchronized :: TypedTerm SynchronizedStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementThrow :: TypedTerm ThrowStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementTry :: TypedTerm TryStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: statementWithoutTrailingSubstatementYield :: TypedTerm YieldStatement -> TypedTerm StatementWithoutTrailingSubstatement
- Hydra.Dsl.Java.Syntax: staticImportOnDemandDeclaration :: TypedTerm TypeName -> TypedTerm StaticImportOnDemandDeclaration
- Hydra.Dsl.Java.Syntax: staticImportOnDemandDeclarationStaticImportOnDemandDeclaration :: TypedName StaticImportOnDemandDeclaration
- Hydra.Dsl.Java.Syntax: staticInitializer :: TypedTerm Block -> TypedTerm StaticInitializer
- Hydra.Dsl.Java.Syntax: staticInitializerStaticInitializer :: TypedName StaticInitializer
- Hydra.Dsl.Java.Syntax: stringLiteral :: TypedTerm String -> TypedTerm StringLiteral
- Hydra.Dsl.Java.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
- Hydra.Dsl.Java.Syntax: switchBlockLegacy :: TypedTerm SwitchBlock_Legacy -> TypedTerm SwitchBlock
- Hydra.Dsl.Java.Syntax: switchBlockRules :: TypedTerm [SwitchRule] -> TypedTerm SwitchBlock
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroup :: TypedTerm [SwitchLabel] -> TypedTerm [BlockStatement] -> TypedTerm SwitchBlockStatementGroup
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroupLabels :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [SwitchLabel]
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroupStatements :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [BlockStatement]
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroupSwitchBlockStatementGroup :: TypedName SwitchBlockStatementGroup
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroupWithLabels :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlockStatementGroup
- Hydra.Dsl.Java.Syntax: switchBlockStatementGroupWithStatements :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [BlockStatement] -> TypedTerm SwitchBlockStatementGroup
- Hydra.Dsl.Java.Syntax: switchBlockSwitchBlock :: TypedName SwitchBlock
- Hydra.Dsl.Java.Syntax: switchBlock_Legacy :: TypedTerm [SwitchBlockStatementGroup] -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlock_Legacy
- Hydra.Dsl.Java.Syntax: switchBlock_LegacyGroups :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchBlockStatementGroup]
- Hydra.Dsl.Java.Syntax: switchBlock_LegacySwitchBlock_Legacy :: TypedName SwitchBlock_Legacy
- Hydra.Dsl.Java.Syntax: switchBlock_LegacyTrailingLabels :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchLabel]
- Hydra.Dsl.Java.Syntax: switchBlock_LegacyWithGroups :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchBlockStatementGroup] -> TypedTerm SwitchBlock_Legacy
- Hydra.Dsl.Java.Syntax: switchBlock_LegacyWithTrailingLabels :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlock_Legacy
- Hydra.Dsl.Java.Syntax: switchExpression :: TypedTerm Expression -> TypedTerm SwitchBlock -> TypedTerm SwitchExpression
- Hydra.Dsl.Java.Syntax: switchExpressionBlock :: TypedTerm SwitchExpression -> TypedTerm SwitchBlock
- Hydra.Dsl.Java.Syntax: switchExpressionCond :: TypedTerm SwitchExpression -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: switchExpressionSwitchExpression :: TypedName SwitchExpression
- Hydra.Dsl.Java.Syntax: switchExpressionWithBlock :: TypedTerm SwitchExpression -> TypedTerm SwitchBlock -> TypedTerm SwitchExpression
- Hydra.Dsl.Java.Syntax: switchExpressionWithCond :: TypedTerm SwitchExpression -> TypedTerm Expression -> TypedTerm SwitchExpression
- Hydra.Dsl.Java.Syntax: switchLabelCase :: TypedTerm [CaseConstant] -> TypedTerm SwitchLabel
- Hydra.Dsl.Java.Syntax: switchLabelCasePattern :: TypedTerm CasePattern -> TypedTerm SwitchLabel
- Hydra.Dsl.Java.Syntax: switchLabelDefault :: TypedTerm SwitchLabel
- Hydra.Dsl.Java.Syntax: switchLabelNull :: TypedTerm Bool -> TypedTerm SwitchLabel
- Hydra.Dsl.Java.Syntax: switchLabelSwitchLabel :: TypedName SwitchLabel
- Hydra.Dsl.Java.Syntax: switchRule :: TypedTerm SwitchLabel -> TypedTerm SwitchRule_Body -> TypedTerm SwitchRule
- Hydra.Dsl.Java.Syntax: switchRuleBody :: TypedTerm SwitchRule -> TypedTerm SwitchRule_Body
- Hydra.Dsl.Java.Syntax: switchRuleLabel :: TypedTerm SwitchRule -> TypedTerm SwitchLabel
- Hydra.Dsl.Java.Syntax: switchRuleSwitchRule :: TypedName SwitchRule
- Hydra.Dsl.Java.Syntax: switchRuleWithBody :: TypedTerm SwitchRule -> TypedTerm SwitchRule_Body -> TypedTerm SwitchRule
- Hydra.Dsl.Java.Syntax: switchRuleWithLabel :: TypedTerm SwitchRule -> TypedTerm SwitchLabel -> TypedTerm SwitchRule
- Hydra.Dsl.Java.Syntax: switchRule_BodyBlock :: TypedTerm Block -> TypedTerm SwitchRule_Body
- Hydra.Dsl.Java.Syntax: switchRule_BodyExpression :: TypedTerm Expression -> TypedTerm SwitchRule_Body
- Hydra.Dsl.Java.Syntax: switchRule_BodySwitchRule_Body :: TypedName SwitchRule_Body
- Hydra.Dsl.Java.Syntax: switchRule_BodyThrow :: TypedTerm ThrowStatement -> TypedTerm SwitchRule_Body
- Hydra.Dsl.Java.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm SwitchBlock -> TypedTerm SwitchStatement
- Hydra.Dsl.Java.Syntax: switchStatementBlock :: TypedTerm SwitchStatement -> TypedTerm SwitchBlock
- Hydra.Dsl.Java.Syntax: switchStatementCond :: TypedTerm SwitchStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
- Hydra.Dsl.Java.Syntax: switchStatementWithBlock :: TypedTerm SwitchStatement -> TypedTerm SwitchBlock -> TypedTerm SwitchStatement
- Hydra.Dsl.Java.Syntax: switchStatementWithCond :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
- Hydra.Dsl.Java.Syntax: synchronizedStatement :: TypedTerm Expression -> TypedTerm Block -> TypedTerm SynchronizedStatement
- Hydra.Dsl.Java.Syntax: synchronizedStatementBlock :: TypedTerm SynchronizedStatement -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: synchronizedStatementExpression :: TypedTerm SynchronizedStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: synchronizedStatementSynchronizedStatement :: TypedName SynchronizedStatement
- Hydra.Dsl.Java.Syntax: synchronizedStatementWithBlock :: TypedTerm SynchronizedStatement -> TypedTerm Block -> TypedTerm SynchronizedStatement
- Hydra.Dsl.Java.Syntax: synchronizedStatementWithExpression :: TypedTerm SynchronizedStatement -> TypedTerm Expression -> TypedTerm SynchronizedStatement
- Hydra.Dsl.Java.Syntax: textBlock :: TypedTerm String -> TypedTerm TextBlock
- Hydra.Dsl.Java.Syntax: textBlockTextBlock :: TypedName TextBlock
- Hydra.Dsl.Java.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
- Hydra.Dsl.Java.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
- Hydra.Dsl.Java.Syntax: throws :: TypedTerm [ExceptionType] -> TypedTerm Throws
- Hydra.Dsl.Java.Syntax: throwsThrows :: TypedName Throws
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationNone :: TypedTerm TopLevelClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration :: TypedName TopLevelClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithComments :: TypedTerm TopLevelClassOrInterfaceDeclaration -> TypedTerm (Maybe String) -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsComments :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm (Maybe String)
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments :: TypedName TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsValue :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm TopLevelClassOrInterfaceDeclaration
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsWithComments :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Dsl.Java.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsWithValue :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm TopLevelClassOrInterfaceDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Dsl.Java.Syntax: tryStatementSimple :: TypedTerm TryStatement_Simple -> TypedTerm TryStatement
- Hydra.Dsl.Java.Syntax: tryStatementTryStatement :: TypedName TryStatement
- Hydra.Dsl.Java.Syntax: tryStatementWithFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm TryStatement
- Hydra.Dsl.Java.Syntax: tryStatementWithResources :: TypedTerm TryWithResourcesStatement -> TypedTerm TryStatement
- Hydra.Dsl.Java.Syntax: tryStatement_Simple :: TypedTerm Block -> TypedTerm Catches -> TypedTerm TryStatement_Simple
- Hydra.Dsl.Java.Syntax: tryStatement_SimpleBlock :: TypedTerm TryStatement_Simple -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: tryStatement_SimpleCatches :: TypedTerm TryStatement_Simple -> TypedTerm Catches
- Hydra.Dsl.Java.Syntax: tryStatement_SimpleTryStatement_Simple :: TypedName TryStatement_Simple
- Hydra.Dsl.Java.Syntax: tryStatement_SimpleWithBlock :: TypedTerm TryStatement_Simple -> TypedTerm Block -> TypedTerm TryStatement_Simple
- Hydra.Dsl.Java.Syntax: tryStatement_SimpleWithCatches :: TypedTerm TryStatement_Simple -> TypedTerm Catches -> TypedTerm TryStatement_Simple
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinally :: TypedTerm Block -> TypedTerm (Maybe Catches) -> TypedTerm Finally -> TypedTerm TryStatement_WithFinally
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyBlock :: TypedTerm TryStatement_WithFinally -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyCatches :: TypedTerm TryStatement_WithFinally -> TypedTerm (Maybe Catches)
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm Finally
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyTryStatement_WithFinally :: TypedName TryStatement_WithFinally
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyWithBlock :: TypedTerm TryStatement_WithFinally -> TypedTerm Block -> TypedTerm TryStatement_WithFinally
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyWithCatches :: TypedTerm TryStatement_WithFinally -> TypedTerm (Maybe Catches) -> TypedTerm TryStatement_WithFinally
- Hydra.Dsl.Java.Syntax: tryStatement_WithFinallyWithFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm Finally -> TypedTerm TryStatement_WithFinally
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatement :: TypedTerm ResourceSpecification -> TypedTerm Block -> TypedTerm (Maybe Catches) -> TypedTerm (Maybe Finally) -> TypedTerm TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementBlock :: TypedTerm TryWithResourcesStatement -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementCatches :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Catches)
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementFinally :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Finally)
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementResourceSpecification :: TypedTerm TryWithResourcesStatement -> TypedTerm ResourceSpecification
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementTryWithResourcesStatement :: TypedName TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementWithBlock :: TypedTerm TryWithResourcesStatement -> TypedTerm Block -> TypedTerm TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementWithCatches :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Catches) -> TypedTerm TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementWithFinally :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Finally) -> TypedTerm TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: tryWithResourcesStatementWithResourceSpecification :: TypedTerm TryWithResourcesStatement -> TypedTerm ResourceSpecification -> TypedTerm TryWithResourcesStatement
- Hydra.Dsl.Java.Syntax: typeArgumentReference :: TypedTerm ReferenceType -> TypedTerm TypeArgument
- Hydra.Dsl.Java.Syntax: typeArgumentTypeArgument :: TypedName TypeArgument
- Hydra.Dsl.Java.Syntax: typeArgumentWildcard :: TypedTerm Wildcard -> TypedTerm TypeArgument
- Hydra.Dsl.Java.Syntax: typeArgumentsOrDiamondArguments :: TypedTerm [TypeArgument] -> TypedTerm TypeArgumentsOrDiamond
- Hydra.Dsl.Java.Syntax: typeArgumentsOrDiamondDiamond :: TypedTerm TypeArgumentsOrDiamond
- Hydra.Dsl.Java.Syntax: typeArgumentsOrDiamondTypeArgumentsOrDiamond :: TypedName TypeArgumentsOrDiamond
- Hydra.Dsl.Java.Syntax: typeBoundClassOrInterface :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm TypeBound
- Hydra.Dsl.Java.Syntax: typeBoundTypeBound :: TypedName TypeBound
- Hydra.Dsl.Java.Syntax: typeBoundVariable :: TypedTerm TypeVariable -> TypedTerm TypeBound
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [AdditionalBound] -> TypedTerm TypeBound_ClassOrInterface
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterfaceAdditional :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm [AdditionalBound]
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterfaceType :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm ClassOrInterfaceType
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterfaceTypeBound_ClassOrInterface :: TypedName TypeBound_ClassOrInterface
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterfaceWithAdditional :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm [AdditionalBound] -> TypedTerm TypeBound_ClassOrInterface
- Hydra.Dsl.Java.Syntax: typeBound_ClassOrInterfaceWithType :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm TypeBound_ClassOrInterface
- Hydra.Dsl.Java.Syntax: typeIdentifier :: TypedTerm Identifier -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: typeIdentifierTypeIdentifier :: TypedName TypeIdentifier
- Hydra.Dsl.Java.Syntax: typeImportOnDemandDeclaration :: TypedTerm PackageOrTypeName -> TypedTerm TypeImportOnDemandDeclaration
- Hydra.Dsl.Java.Syntax: typeImportOnDemandDeclarationTypeImportOnDemandDeclaration :: TypedName TypeImportOnDemandDeclaration
- Hydra.Dsl.Java.Syntax: typeName :: TypedTerm TypeIdentifier -> TypedTerm (Maybe PackageOrTypeName) -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: typeNameArrayArray :: TypedTerm TypeNameArray -> TypedTerm TypeNameArray
- Hydra.Dsl.Java.Syntax: typeNameArraySimple :: TypedTerm TypeName -> TypedTerm TypeNameArray
- Hydra.Dsl.Java.Syntax: typeNameArrayTypeNameArray :: TypedName TypeNameArray
- Hydra.Dsl.Java.Syntax: typeNameIdentifier :: TypedTerm TypeName -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: typeNameQualifier :: TypedTerm TypeName -> TypedTerm (Maybe PackageOrTypeName)
- Hydra.Dsl.Java.Syntax: typeNameTypeName :: TypedName TypeName
- Hydra.Dsl.Java.Syntax: typeNameWithIdentifier :: TypedTerm TypeName -> TypedTerm TypeIdentifier -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: typeNameWithQualifier :: TypedTerm TypeName -> TypedTerm (Maybe PackageOrTypeName) -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: typeParameter :: TypedTerm [TypeParameterModifier] -> TypedTerm TypeIdentifier -> TypedTerm (Maybe TypeBound) -> TypedTerm TypeParameter
- Hydra.Dsl.Java.Syntax: typeParameterBound :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeBound)
- Hydra.Dsl.Java.Syntax: typeParameterIdentifier :: TypedTerm TypeParameter -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: typeParameterModifier :: TypedTerm Annotation -> TypedTerm TypeParameterModifier
- Hydra.Dsl.Java.Syntax: typeParameterModifierTypeParameterModifier :: TypedName TypeParameterModifier
- Hydra.Dsl.Java.Syntax: typeParameterModifiers :: TypedTerm TypeParameter -> TypedTerm [TypeParameterModifier]
- Hydra.Dsl.Java.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
- Hydra.Dsl.Java.Syntax: typeParameterWithBound :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeBound) -> TypedTerm TypeParameter
- Hydra.Dsl.Java.Syntax: typeParameterWithIdentifier :: TypedTerm TypeParameter -> TypedTerm TypeIdentifier -> TypedTerm TypeParameter
- Hydra.Dsl.Java.Syntax: typeParameterWithModifiers :: TypedTerm TypeParameter -> TypedTerm [TypeParameterModifier] -> TypedTerm TypeParameter
- Hydra.Dsl.Java.Syntax: typePattern :: TypedTerm LocalVariableDeclaration -> TypedTerm TypePattern
- Hydra.Dsl.Java.Syntax: typePatternTypePattern :: TypedName TypePattern
- Hydra.Dsl.Java.Syntax: typePrimitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm Type
- Hydra.Dsl.Java.Syntax: typeReference :: TypedTerm ReferenceType -> TypedTerm Type
- Hydra.Dsl.Java.Syntax: typeType :: TypedName Type
- Hydra.Dsl.Java.Syntax: typeVariable :: TypedTerm [Annotation] -> TypedTerm TypeIdentifier -> TypedTerm TypeVariable
- Hydra.Dsl.Java.Syntax: typeVariableAnnotations :: TypedTerm TypeVariable -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: typeVariableIdentifier :: TypedTerm TypeVariable -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: typeVariableTypeVariable :: TypedName TypeVariable
- Hydra.Dsl.Java.Syntax: typeVariableWithAnnotations :: TypedTerm TypeVariable -> TypedTerm [Annotation] -> TypedTerm TypeVariable
- Hydra.Dsl.Java.Syntax: typeVariableWithIdentifier :: TypedTerm TypeVariable -> TypedTerm TypeIdentifier -> TypedTerm TypeVariable
- Hydra.Dsl.Java.Syntax: unAdditionalBound :: TypedTerm AdditionalBound -> TypedTerm InterfaceType
- Hydra.Dsl.Java.Syntax: unAmbiguousName :: TypedTerm AmbiguousName -> TypedTerm [Identifier]
- Hydra.Dsl.Java.Syntax: unAndExpression :: TypedTerm AndExpression -> TypedTerm [EqualityExpression]
- Hydra.Dsl.Java.Syntax: unAnnotationInterfaceBody :: TypedTerm AnnotationInterfaceBody -> TypedTerm [AnnotationInterfaceMemberDeclaration]
- Hydra.Dsl.Java.Syntax: unArrayInitializer :: TypedTerm ArrayInitializer -> TypedTerm [[VariableInitializer]]
- Hydra.Dsl.Java.Syntax: unBlock :: TypedTerm Block -> TypedTerm [BlockStatement]
- Hydra.Dsl.Java.Syntax: unBreakStatement :: TypedTerm BreakStatement -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.Java.Syntax: unCaseConstant :: TypedTerm CaseConstant -> TypedTerm ConditionalExpression
- Hydra.Dsl.Java.Syntax: unCatches :: TypedTerm Catches -> TypedTerm [CatchClause]
- Hydra.Dsl.Java.Syntax: unClassBody :: TypedTerm ClassBody -> TypedTerm [ClassBodyDeclarationWithComments]
- Hydra.Dsl.Java.Syntax: unConditionalAndExpression :: TypedTerm ConditionalAndExpression -> TypedTerm [InclusiveOrExpression]
- Hydra.Dsl.Java.Syntax: unConditionalOrExpression :: TypedTerm ConditionalOrExpression -> TypedTerm [ConditionalAndExpression]
- Hydra.Dsl.Java.Syntax: unConstantExpression :: TypedTerm ConstantExpression -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: unContinueStatement :: TypedTerm ContinueStatement -> TypedTerm (Maybe Identifier)
- Hydra.Dsl.Java.Syntax: unDefaultValue :: TypedTerm DefaultValue -> TypedTerm ElementValue
- Hydra.Dsl.Java.Syntax: unDims :: TypedTerm Dims -> TypedTerm [[Annotation]]
- Hydra.Dsl.Java.Syntax: unElementValueArrayInitializer :: TypedTerm ElementValueArrayInitializer -> TypedTerm [ElementValue]
- Hydra.Dsl.Java.Syntax: unEnumBody :: TypedTerm EnumBody -> TypedTerm [EnumBody_Element]
- Hydra.Dsl.Java.Syntax: unEnumConstantModifier :: TypedTerm EnumConstantModifier -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: unExclusiveOrExpression :: TypedTerm ExclusiveOrExpression -> TypedTerm [AndExpression]
- Hydra.Dsl.Java.Syntax: unExpressionStatement :: TypedTerm ExpressionStatement -> TypedTerm StatementExpression
- Hydra.Dsl.Java.Syntax: unFinally :: TypedTerm Finally -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: unFloatingPointLiteral :: TypedTerm FloatingPointLiteral -> TypedTerm Double
- Hydra.Dsl.Java.Syntax: unForUpdate :: TypedTerm ForUpdate -> TypedTerm [StatementExpression]
- Hydra.Dsl.Java.Syntax: unGuard :: TypedTerm Guard -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
- Hydra.Dsl.Java.Syntax: unInclusiveOrExpression :: TypedTerm InclusiveOrExpression -> TypedTerm [ExclusiveOrExpression]
- Hydra.Dsl.Java.Syntax: unInstanceInitializer :: TypedTerm InstanceInitializer -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: unIntegerLiteral :: TypedTerm IntegerLiteral -> TypedTerm Integer
- Hydra.Dsl.Java.Syntax: unInterfaceBody :: TypedTerm InterfaceBody -> TypedTerm [InterfaceMemberDeclarationWithComments]
- Hydra.Dsl.Java.Syntax: unInterfaceType :: TypedTerm InterfaceType -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: unLocalVariableDeclarationStatement :: TypedTerm LocalVariableDeclarationStatement -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: unMarkerAnnotation :: TypedTerm MarkerAnnotation -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: unMethodName :: TypedTerm MethodName -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: unMethodReference_Array :: TypedTerm MethodReference_Array -> TypedTerm ArrayType
- Hydra.Dsl.Java.Syntax: unPackageModifier :: TypedTerm PackageModifier -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: unPackageName :: TypedTerm PackageName -> TypedTerm [Identifier]
- Hydra.Dsl.Java.Syntax: unPackageOrTypeName :: TypedTerm PackageOrTypeName -> TypedTerm [Identifier]
- Hydra.Dsl.Java.Syntax: unPostDecrementExpression :: TypedTerm PostDecrementExpression -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: unPostIncrementExpression :: TypedTerm PostIncrementExpression -> TypedTerm PostfixExpression
- Hydra.Dsl.Java.Syntax: unPreDecrementExpression :: TypedTerm PreDecrementExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unPreIncrementExpression :: TypedTerm PreIncrementExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unRecordBody :: TypedTerm RecordBody -> TypedTerm [RecordBodyDeclaration]
- Hydra.Dsl.Java.Syntax: unRecordComponentModifier :: TypedTerm RecordComponentModifier -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: unRecordHeader :: TypedTerm RecordHeader -> TypedTerm [RecordComponent]
- Hydra.Dsl.Java.Syntax: unResourceSpecification :: TypedTerm ResourceSpecification -> TypedTerm [Resource]
- Hydra.Dsl.Java.Syntax: unReturnStatement :: TypedTerm ReturnStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: unSimpleTypeName :: TypedTerm SimpleTypeName -> TypedTerm TypeIdentifier
- Hydra.Dsl.Java.Syntax: unSingleTypeImportDeclaration :: TypedTerm SingleTypeImportDeclaration -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: unStaticImportOnDemandDeclaration :: TypedTerm StaticImportOnDemandDeclaration -> TypedTerm TypeName
- Hydra.Dsl.Java.Syntax: unStaticInitializer :: TypedTerm StaticInitializer -> TypedTerm Block
- Hydra.Dsl.Java.Syntax: unStringLiteral :: TypedTerm StringLiteral -> TypedTerm String
- Hydra.Dsl.Java.Syntax: unTextBlock :: TypedTerm TextBlock -> TypedTerm String
- Hydra.Dsl.Java.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: unThrows :: TypedTerm Throws -> TypedTerm [ExceptionType]
- Hydra.Dsl.Java.Syntax: unTypeIdentifier :: TypedTerm TypeIdentifier -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: unTypeImportOnDemandDeclaration :: TypedTerm TypeImportOnDemandDeclaration -> TypedTerm PackageOrTypeName
- Hydra.Dsl.Java.Syntax: unTypeParameterModifier :: TypedTerm TypeParameterModifier -> TypedTerm Annotation
- Hydra.Dsl.Java.Syntax: unTypePattern :: TypedTerm TypePattern -> TypedTerm LocalVariableDeclaration
- Hydra.Dsl.Java.Syntax: unUnannClassType :: TypedTerm UnannClassType -> TypedTerm ClassType
- Hydra.Dsl.Java.Syntax: unUnannType :: TypedTerm UnannType -> TypedTerm Type
- Hydra.Dsl.Java.Syntax: unYieldStatement :: TypedTerm YieldStatement -> TypedTerm Expression
- Hydra.Dsl.Java.Syntax: unannClassType :: TypedTerm ClassType -> TypedTerm UnannClassType
- Hydra.Dsl.Java.Syntax: unannClassTypeUnannClassType :: TypedName UnannClassType
- Hydra.Dsl.Java.Syntax: unannType :: TypedTerm Type -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: unannTypeUnannType :: TypedName UnannType
- Hydra.Dsl.Java.Syntax: unaryExpressionMinus :: TypedTerm UnaryExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusCast :: TypedTerm CastExpression -> TypedTerm UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusNot :: TypedTerm UnaryExpression -> TypedTerm UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusPostfix :: TypedTerm PostfixExpression -> TypedTerm UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusSwitchExpression :: TypedTerm SwitchExpression -> TypedTerm UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusTilde :: TypedTerm UnaryExpression -> TypedTerm UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus :: TypedName UnaryExpressionNotPlusMinus
- Hydra.Dsl.Java.Syntax: unaryExpressionOther :: TypedTerm UnaryExpressionNotPlusMinus -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unaryExpressionPlus :: TypedTerm UnaryExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unaryExpressionPreDecrement :: TypedTerm PreDecrementExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unaryExpressionPreIncrement :: TypedTerm PreIncrementExpression -> TypedTerm UnaryExpression
- Hydra.Dsl.Java.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpression :: TypedTerm [TypeArgument] -> TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [Expression] -> TypedTerm (Maybe ClassBody) -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [Expression]
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionBody :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm (Maybe ClassBody)
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionClassOrInterface :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassOrInterfaceTypeToInstantiate
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionTypeArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [TypeArgument]
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression :: TypedName UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionWithArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [Expression] -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionWithBody :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm (Maybe ClassBody) -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionWithClassOrInterface :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: unqualifiedClassInstanceCreationExpressionWithTypeArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [TypeArgument] -> TypedTerm UnqualifiedClassInstanceCreationExpression
- Hydra.Dsl.Java.Syntax: variableAccessExpressionName :: TypedTerm ExpressionName -> TypedTerm VariableAccess
- Hydra.Dsl.Java.Syntax: variableAccessFieldAccess :: TypedTerm FieldAccess -> TypedTerm VariableAccess
- Hydra.Dsl.Java.Syntax: variableAccessVariableAccess :: TypedName VariableAccess
- Hydra.Dsl.Java.Syntax: variableArityParameter :: TypedTerm [VariableModifier] -> TypedTerm UnannType -> TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityParameterAnnotations :: TypedTerm VariableArityParameter -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: variableArityParameterIdentifier :: TypedTerm VariableArityParameter -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: variableArityParameterModifiers :: TypedTerm VariableArityParameter -> TypedTerm [VariableModifier]
- Hydra.Dsl.Java.Syntax: variableArityParameterType :: TypedTerm VariableArityParameter -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: variableArityParameterVariableArityParameter :: TypedName VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityParameterWithAnnotations :: TypedTerm VariableArityParameter -> TypedTerm [Annotation] -> TypedTerm VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityParameterWithIdentifier :: TypedTerm VariableArityParameter -> TypedTerm Identifier -> TypedTerm VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityParameterWithModifiers :: TypedTerm VariableArityParameter -> TypedTerm [VariableModifier] -> TypedTerm VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityParameterWithType :: TypedTerm VariableArityParameter -> TypedTerm UnannType -> TypedTerm VariableArityParameter
- Hydra.Dsl.Java.Syntax: variableArityRecordComponent :: TypedTerm [RecordComponentModifier] -> TypedTerm UnannType -> TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentAnnotations :: TypedTerm VariableArityRecordComponent -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentIdentifier :: TypedTerm VariableArityRecordComponent -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentModifiers :: TypedTerm VariableArityRecordComponent -> TypedTerm [RecordComponentModifier]
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentType :: TypedTerm VariableArityRecordComponent -> TypedTerm UnannType
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentVariableArityRecordComponent :: TypedName VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentWithAnnotations :: TypedTerm VariableArityRecordComponent -> TypedTerm [Annotation] -> TypedTerm VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentWithIdentifier :: TypedTerm VariableArityRecordComponent -> TypedTerm Identifier -> TypedTerm VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentWithModifiers :: TypedTerm VariableArityRecordComponent -> TypedTerm [RecordComponentModifier] -> TypedTerm VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableArityRecordComponentWithType :: TypedTerm VariableArityRecordComponent -> TypedTerm UnannType -> TypedTerm VariableArityRecordComponent
- Hydra.Dsl.Java.Syntax: variableDeclarator :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe VariableInitializer) -> TypedTerm VariableDeclarator
- Hydra.Dsl.Java.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: variableDeclaratorId2 :: TypedTerm Identifier -> TypedTerm (Maybe Dims) -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: variableDeclaratorIdDims :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe Dims)
- Hydra.Dsl.Java.Syntax: variableDeclaratorIdIdentifier :: TypedTerm VariableDeclaratorId -> TypedTerm Identifier
- Hydra.Dsl.Java.Syntax: variableDeclaratorIdVariableDeclaratorId :: TypedName VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: variableDeclaratorIdWithDims :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe Dims) -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: variableDeclaratorIdWithIdentifier :: TypedTerm VariableDeclaratorId -> TypedTerm Identifier -> TypedTerm VariableDeclaratorId
- Hydra.Dsl.Java.Syntax: variableDeclaratorInitializer :: TypedTerm VariableDeclarator -> TypedTerm (Maybe VariableInitializer)
- Hydra.Dsl.Java.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
- Hydra.Dsl.Java.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm VariableDeclaratorId -> TypedTerm VariableDeclarator
- Hydra.Dsl.Java.Syntax: variableDeclaratorWithInitializer :: TypedTerm VariableDeclarator -> TypedTerm (Maybe VariableInitializer) -> TypedTerm VariableDeclarator
- Hydra.Dsl.Java.Syntax: variableInitializerArrayInitializer :: TypedTerm ArrayInitializer -> TypedTerm VariableInitializer
- Hydra.Dsl.Java.Syntax: variableInitializerExpression :: TypedTerm Expression -> TypedTerm VariableInitializer
- Hydra.Dsl.Java.Syntax: variableInitializerVariableInitializer :: TypedName VariableInitializer
- Hydra.Dsl.Java.Syntax: variableModifierAnnotation :: TypedTerm Annotation -> TypedTerm VariableModifier
- Hydra.Dsl.Java.Syntax: variableModifierFinal :: TypedTerm VariableModifier
- Hydra.Dsl.Java.Syntax: variableModifierVariableModifier :: TypedName VariableModifier
- Hydra.Dsl.Java.Syntax: whileStatement :: TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.Java.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
- Hydra.Dsl.Java.Syntax: whileStatementCond :: TypedTerm WhileStatement -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIf :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm WhileStatementNoShortIf
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIfBody :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIfCond :: TypedTerm WhileStatementNoShortIf -> TypedTerm (Maybe Expression)
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIfWhileStatementNoShortIf :: TypedName WhileStatementNoShortIf
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIfWithBody :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm WhileStatementNoShortIf
- Hydra.Dsl.Java.Syntax: whileStatementNoShortIfWithCond :: TypedTerm WhileStatementNoShortIf -> TypedTerm (Maybe Expression) -> TypedTerm WhileStatementNoShortIf
- Hydra.Dsl.Java.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
- Hydra.Dsl.Java.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
- Hydra.Dsl.Java.Syntax: whileStatementWithCond :: TypedTerm WhileStatement -> TypedTerm (Maybe Expression) -> TypedTerm WhileStatement
- Hydra.Dsl.Java.Syntax: wildcard :: TypedTerm [Annotation] -> TypedTerm (Maybe WildcardBounds) -> TypedTerm Wildcard
- Hydra.Dsl.Java.Syntax: wildcardAnnotations :: TypedTerm Wildcard -> TypedTerm [Annotation]
- Hydra.Dsl.Java.Syntax: wildcardBoundsExtends :: TypedTerm ReferenceType -> TypedTerm WildcardBounds
- Hydra.Dsl.Java.Syntax: wildcardBoundsSuper :: TypedTerm ReferenceType -> TypedTerm WildcardBounds
- Hydra.Dsl.Java.Syntax: wildcardBoundsWildcardBounds :: TypedName WildcardBounds
- Hydra.Dsl.Java.Syntax: wildcardWildcard :: TypedName Wildcard
- Hydra.Dsl.Java.Syntax: wildcardWildcard2 :: TypedTerm Wildcard -> TypedTerm (Maybe WildcardBounds)
- Hydra.Dsl.Java.Syntax: wildcardWithAnnotations :: TypedTerm Wildcard -> TypedTerm [Annotation] -> TypedTerm Wildcard
- Hydra.Dsl.Java.Syntax: wildcardWithWildcard :: TypedTerm Wildcard -> TypedTerm (Maybe WildcardBounds) -> TypedTerm Wildcard
- Hydra.Dsl.Java.Syntax: yieldStatement :: TypedTerm Expression -> TypedTerm YieldStatement
- Hydra.Dsl.Java.Syntax: yieldStatementYieldStatement :: TypedName YieldStatement
- Hydra.Gradle: AntlrConfig :: [String] -> FilePath -> AntlrConfig
- Hydra.Gradle: GradleBuildConfiguration :: [PackageDependency] -> [String] -> [FilePath] -> [String] -> Maybe AntlrConfig -> GradleBuildConfiguration
- Hydra.Gradle: [antlrConfigArguments] :: AntlrConfig -> [String]
- Hydra.Gradle: [antlrConfigOutputDirectory] :: AntlrConfig -> FilePath
- Hydra.Gradle: [gradleBuildConfigurationAntlr] :: GradleBuildConfiguration -> Maybe AntlrConfig
- Hydra.Gradle: [gradleBuildConfigurationDependencies] :: GradleBuildConfiguration -> [PackageDependency]
- Hydra.Gradle: [gradleBuildConfigurationExcludes] :: GradleBuildConfiguration -> [String]
- Hydra.Gradle: [gradleBuildConfigurationExtraSourceDirs] :: GradleBuildConfiguration -> [FilePath]
- Hydra.Gradle: [gradleBuildConfigurationPlugins] :: GradleBuildConfiguration -> [String]
- Hydra.Gradle: _AntlrConfig :: Name
- Hydra.Gradle: _AntlrConfig_arguments :: Name
- Hydra.Gradle: _AntlrConfig_outputDirectory :: Name
- Hydra.Gradle: _GradleBuildConfiguration :: Name
- Hydra.Gradle: _GradleBuildConfiguration_antlr :: Name
- Hydra.Gradle: _GradleBuildConfiguration_dependencies :: Name
- Hydra.Gradle: _GradleBuildConfiguration_excludes :: Name
- Hydra.Gradle: _GradleBuildConfiguration_extraSourceDirs :: Name
- Hydra.Gradle: _GradleBuildConfiguration_plugins :: Name
- Hydra.Gradle: data AntlrConfig
- Hydra.Gradle: data GradleBuildConfiguration
- Hydra.Gradle: instance GHC.Classes.Eq Hydra.Gradle.AntlrConfig
- Hydra.Gradle: instance GHC.Classes.Eq Hydra.Gradle.GradleBuildConfiguration
- Hydra.Gradle: instance GHC.Classes.Ord Hydra.Gradle.AntlrConfig
- Hydra.Gradle: instance GHC.Classes.Ord Hydra.Gradle.GradleBuildConfiguration
- Hydra.Gradle: instance GHC.Read.Read Hydra.Gradle.AntlrConfig
- Hydra.Gradle: instance GHC.Read.Read Hydra.Gradle.GradleBuildConfiguration
- Hydra.Gradle: instance GHC.Show.Show Hydra.Gradle.AntlrConfig
- Hydra.Gradle: instance GHC.Show.Show Hydra.Gradle.GradleBuildConfiguration
- Hydra.Java.Environment: instance GHC.Read.Read Hydra.Java.Environment.Aliases
- Hydra.Java.Environment: instance GHC.Read.Read Hydra.Java.Environment.JavaFeatures
- Hydra.Java.Environment: instance GHC.Read.Read Hydra.Java.Environment.JavaSymbolClass
- Hydra.Java.Environment: instance GHC.Show.Show Hydra.Java.Environment.Aliases
- Hydra.Java.Environment: instance GHC.Show.Show Hydra.Java.Environment.JavaFeatures
- Hydra.Java.Environment: instance GHC.Show.Show Hydra.Java.Environment.JavaSymbolClass
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AdditionalBound
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AdditiveExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AdditiveExpression_Binary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AmbiguousName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AndExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotatedIdentifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Annotation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotationInterfaceBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotationInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotationInterfaceElementDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotationInterfaceElementModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AnnotationInterfaceMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayAccess
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayAccess_Variant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ArrayType_Variant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AssertStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AssertStatement_Pair
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Assignment
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AssignmentExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.AssignmentOperator
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.BasicForStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.BasicForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Block
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.BlockStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.BooleanArray
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.BreakStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CaseConstant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CasePattern
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CastExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CastExpression_Lambda
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CastExpression_NotPlusMinus
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CastExpression_Primitive
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CastExpression_RefAndBounds
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CatchClause
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CatchFormalParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CatchType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Catches
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassBodyDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassBodyDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassInstanceCreationExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassInstanceCreationExpression_Qualifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassLiteral
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassOrInterfaceType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassOrInterfaceTypeToInstantiate
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ClassTypeQualifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CompactConstructorDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.CompilationUnit
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConditionalAndExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConditionalExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConditionalExpression_TernaryCond
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConditionalExpression_TernaryLambda
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConditionalOrExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstantDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstantExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstantModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstructorBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstructorDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstructorDeclarator
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ConstructorModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ContinueStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.DefaultValue
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.DimExpr
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Dims
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.DoStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ElementValue
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ElementValueArrayInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ElementValuePair
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnhancedForCond
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnhancedForStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnhancedForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnumBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnumBody_Element
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnumConstant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnumConstantModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EnumDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EqualityExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.EqualityExpression_Binary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExceptionType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExclusiveOrExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExplicitConstructorInvocation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExplicitConstructorInvocation_Variant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Expression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExpressionName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ExpressionStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FieldAccess
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FieldAccess_Qualifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FieldDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FieldModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Finally
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FloatingPointLiteral
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FloatingPointType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ForCond
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ForInit
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ForStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ForUpdate
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FormalParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.FormalParameter_Simple
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Guard
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Identifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.IfThenElseStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.IfThenElseStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.IfThenStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ImportDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InclusiveOrExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InstanceInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InstanceofExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InstanceofExpression_Rhs
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.IntegerLiteral
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.IntegralType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceMemberDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceMethodDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceMethodModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.InterfaceType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LabeledStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LabeledStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaParameterType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaParameter_Normal
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LambdaParameters
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LeftHandSide
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Literal
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LocalClassOrInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LocalVariableDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LocalVariableDeclarationStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.LocalVariableType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MarkerAnnotation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodDeclarator
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodHeader
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodInvocation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodInvocation_Complex
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodInvocation_Header
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodInvocation_Variant
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_Array
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_Expression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_New
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_Primary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_ReferenceType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MethodReference_Super
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModularCompilationUnit
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleDirective
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleDirective_ExportsOrOpens
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleDirective_Provides
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleDirective_Requires
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ModuleName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MultiplicativeExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.MultiplicativeExpression_Binary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.NormalAnnotation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.NormalClassDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.NormalInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.NumericType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.NumericTypeArray
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.OrdinaryCompilationUnit
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PackageDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PackageModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PackageName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PackageOrTypeName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Pattern
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PostDecrementExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PostIncrementExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PostfixExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PreDecrementExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PreIncrementExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Primary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PrimaryNoNewArrayExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PrimitiveType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.PrimitiveTypeWithAnnotations
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ReceiverParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordBody
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordBodyDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordComponent
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordComponentModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordComponent_Simple
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordHeader
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RecordPattern
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ReferenceType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RelationalExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RelationalExpression_GreaterThan
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RelationalExpression_GreaterThanEqual
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RelationalExpression_LessThan
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RelationalExpression_LessThanEqual
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.RequiresModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Resource
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ResourceSpecification
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Resource_Local
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Result
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ReturnStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ShiftExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ShiftExpression_Binary
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SimpleTypeName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SingleElementAnnotation
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SingleStaticImportDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SingleTypeImportDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Statement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StatementExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StatementWithoutTrailingSubstatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StaticImportOnDemandDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StaticInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.StringLiteral
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchBlock
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchBlockStatementGroup
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchBlock_Legacy
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchLabel
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchRule
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchRule_Body
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SwitchStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.SynchronizedStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TextBlock
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.ThrowStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Throws
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TryStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TryStatement_Simple
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TryStatement_WithFinally
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TryWithResourcesStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Type
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeArgument
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeArgumentsOrDiamond
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeBound
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeBound_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeIdentifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeImportOnDemandDeclaration
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeName
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeNameArray
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeParameterModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypePattern
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.TypeVariable
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.UnannClassType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.UnannType
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.UnaryExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.UnaryExpressionNotPlusMinus
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.UnqualifiedClassInstanceCreationExpression
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableAccess
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableArityParameter
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableArityRecordComponent
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableDeclarator
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableDeclaratorId
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableInitializer
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.VariableModifier
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.WhileStatement
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.WhileStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.Wildcard
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.WildcardBounds
- Hydra.Java.Syntax: instance GHC.Read.Read Hydra.Java.Syntax.YieldStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AdditionalBound
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AdditiveExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AdditiveExpression_Binary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AmbiguousName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AndExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotatedIdentifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Annotation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotationInterfaceBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotationInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotationInterfaceElementDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotationInterfaceElementModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AnnotationInterfaceMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayAccess
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayAccess_Variant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_Primitive
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_Primitive
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ArrayType_Variant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AssertStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AssertStatement_Pair
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Assignment
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AssignmentExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.AssignmentOperator
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.BasicForStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.BasicForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Block
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.BlockStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.BooleanArray
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.BreakStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CaseConstant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CasePattern
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CastExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CastExpression_Lambda
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CastExpression_NotPlusMinus
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CastExpression_Primitive
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CastExpression_RefAndBounds
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CatchClause
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CatchFormalParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CatchType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Catches
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassBodyDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassBodyDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassInstanceCreationExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassInstanceCreationExpression_Qualifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassLiteral
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassOrInterfaceType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassOrInterfaceTypeToInstantiate
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ClassTypeQualifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CompactConstructorDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.CompilationUnit
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConditionalAndExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConditionalExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConditionalExpression_TernaryCond
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConditionalExpression_TernaryLambda
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConditionalOrExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstantDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstantExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstantModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstructorBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstructorDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstructorDeclarator
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ConstructorModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ContinueStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.DefaultValue
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.DimExpr
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Dims
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.DoStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ElementValue
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ElementValueArrayInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ElementValuePair
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnhancedForCond
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnhancedForStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnhancedForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnumBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnumBody_Element
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnumConstant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnumConstantModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EnumDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EqualityExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.EqualityExpression_Binary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExceptionType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExclusiveOrExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExplicitConstructorInvocation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExplicitConstructorInvocation_Variant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Expression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExpressionName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ExpressionStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FieldAccess
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FieldAccess_Qualifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FieldDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FieldModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Finally
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FloatingPointLiteral
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FloatingPointType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ForCond
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ForInit
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ForStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ForStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ForUpdate
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FormalParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.FormalParameter_Simple
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Guard
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Identifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.IfThenElseStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.IfThenElseStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.IfThenStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ImportDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InclusiveOrExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InstanceInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InstanceofExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InstanceofExpression_Rhs
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.IntegerLiteral
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.IntegralType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceMemberDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceMemberDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceMethodDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceMethodModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.InterfaceType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LabeledStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LabeledStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaParameterType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaParameter_Normal
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LambdaParameters
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LeftHandSide
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Literal
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LocalClassOrInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LocalVariableDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LocalVariableDeclarationStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.LocalVariableType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MarkerAnnotation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodDeclarator
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodHeader
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodInvocation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodInvocation_Complex
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodInvocation_Header
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodInvocation_Variant
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_Array
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_Expression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_New
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_Primary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_ReferenceType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MethodReference_Super
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModularCompilationUnit
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleDirective
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleDirective_ExportsOrOpens
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleDirective_Provides
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleDirective_Requires
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ModuleName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MultiplicativeExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.MultiplicativeExpression_Binary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.NormalAnnotation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.NormalClassDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.NormalInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.NumericType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.NumericTypeArray
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.OrdinaryCompilationUnit
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PackageDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PackageModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PackageName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PackageOrTypeName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Pattern
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PostDecrementExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PostIncrementExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PostfixExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PreDecrementExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PreIncrementExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Primary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PrimaryNoNewArrayExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PrimitiveType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.PrimitiveTypeWithAnnotations
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ReceiverParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordBody
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordBodyDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordComponent
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordComponentModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordComponent_Simple
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordHeader
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RecordPattern
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ReferenceType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RelationalExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RelationalExpression_GreaterThan
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RelationalExpression_GreaterThanEqual
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RelationalExpression_LessThan
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RelationalExpression_LessThanEqual
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.RequiresModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Resource
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ResourceSpecification
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Resource_Local
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Result
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ReturnStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ShiftExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ShiftExpression_Binary
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SimpleTypeName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SingleElementAnnotation
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SingleStaticImportDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SingleTypeImportDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Statement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StatementExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StatementWithoutTrailingSubstatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StaticImportOnDemandDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StaticInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.StringLiteral
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchBlock
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchBlockStatementGroup
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchBlock_Legacy
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchLabel
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchRule
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchRule_Body
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SwitchStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.SynchronizedStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TextBlock
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.ThrowStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Throws
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclarationWithComments
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TryStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TryStatement_Simple
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TryStatement_WithFinally
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TryWithResourcesStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Type
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeArgument
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeArgumentsOrDiamond
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeBound
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeBound_ClassOrInterface
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeIdentifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeImportOnDemandDeclaration
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeName
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeNameArray
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeParameterModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypePattern
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.TypeVariable
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.UnannClassType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.UnannType
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.UnaryExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.UnaryExpressionNotPlusMinus
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.UnqualifiedClassInstanceCreationExpression
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableAccess
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableArityParameter
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableArityRecordComponent
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableDeclarator
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableDeclaratorId
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableInitializer
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.VariableModifier
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.WhileStatement
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.WhileStatementNoShortIf
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.Wildcard
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.WildcardBounds
- Hydra.Java.Syntax: instance GHC.Show.Show Hydra.Java.Syntax.YieldStatement
+ Hydra.Java.Coder: explicitTypeArguments :: [TypeArgument] -> TypeArgumentsOrDiamond
+ Hydra.Java.Dsl.Environment: aliases :: TypedTerm ModuleName -> TypedTerm (Map ModuleName PackageName) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Set Name) -> TypedTerm (Map Name Name) -> TypedTerm (Set Name) -> TypedTerm (Map Name Name) -> TypedTerm (Set Name) -> TypedTerm (Maybe Type) -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesAliases :: TypedName Aliases
+ Hydra.Java.Dsl.Environment: aliasesBranchVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesCurrentNamespace :: TypedTerm Aliases -> TypedTerm ModuleName
+ Hydra.Java.Dsl.Environment: aliasesInScopeJavaVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesInScopeTypeParams :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesLambdaVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesMethodCodomain :: TypedTerm Aliases -> TypedTerm (Maybe Type)
+ Hydra.Java.Dsl.Environment: aliasesPackages :: TypedTerm Aliases -> TypedTerm (Map ModuleName PackageName)
+ Hydra.Java.Dsl.Environment: aliasesPolymorphicLocals :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesRecursiveVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesThunkedVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesTrustedTypeVars :: TypedTerm Aliases -> TypedTerm (Set Name)
+ Hydra.Java.Dsl.Environment: aliasesTypeVarSubst :: TypedTerm Aliases -> TypedTerm (Map Name Name)
+ Hydra.Java.Dsl.Environment: aliasesVarRenames :: TypedTerm Aliases -> TypedTerm (Map Name Name)
+ Hydra.Java.Dsl.Environment: aliasesWithBranchVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithCurrentNamespace :: TypedTerm Aliases -> TypedTerm ModuleName -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithInScopeJavaVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithInScopeTypeParams :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithLambdaVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithMethodCodomain :: TypedTerm Aliases -> TypedTerm (Maybe Type) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithPackages :: TypedTerm Aliases -> TypedTerm (Map ModuleName PackageName) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithPolymorphicLocals :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithRecursiveVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithThunkedVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithTrustedTypeVars :: TypedTerm Aliases -> TypedTerm (Set Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithTypeVarSubst :: TypedTerm Aliases -> TypedTerm (Map Name Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: aliasesWithVarRenames :: TypedTerm Aliases -> TypedTerm (Map Name Name) -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: javaEnvironment :: TypedTerm Aliases -> TypedTerm Graph -> TypedTerm JavaEnvironment
+ Hydra.Java.Dsl.Environment: javaEnvironmentAliases :: TypedTerm JavaEnvironment -> TypedTerm Aliases
+ Hydra.Java.Dsl.Environment: javaEnvironmentGraph :: TypedTerm JavaEnvironment -> TypedTerm Graph
+ Hydra.Java.Dsl.Environment: javaEnvironmentJavaEnvironment :: TypedName JavaEnvironment
+ Hydra.Java.Dsl.Environment: javaEnvironmentWithAliases :: TypedTerm JavaEnvironment -> TypedTerm Aliases -> TypedTerm JavaEnvironment
+ Hydra.Java.Dsl.Environment: javaEnvironmentWithGraph :: TypedTerm JavaEnvironment -> TypedTerm Graph -> TypedTerm JavaEnvironment
+ Hydra.Java.Dsl.Environment: javaFeatures :: TypedTerm Bool -> TypedTerm JavaFeatures
+ Hydra.Java.Dsl.Environment: javaFeaturesJavaFeatures :: TypedName JavaFeatures
+ Hydra.Java.Dsl.Environment: javaFeaturesSupportsDiamondOperator :: TypedTerm JavaFeatures -> TypedTerm Bool
+ Hydra.Java.Dsl.Environment: javaFeaturesWithSupportsDiamondOperator :: TypedTerm JavaFeatures -> TypedTerm Bool -> TypedTerm JavaFeatures
+ Hydra.Java.Dsl.Environment: javaSymbolClassConstant :: TypedTerm JavaSymbolClass
+ Hydra.Java.Dsl.Environment: javaSymbolClassHoistedLambda :: TypedTerm Int -> TypedTerm JavaSymbolClass
+ Hydra.Java.Dsl.Environment: javaSymbolClassJavaSymbolClass :: TypedName JavaSymbolClass
+ Hydra.Java.Dsl.Environment: javaSymbolClassLocalVariable :: TypedTerm JavaSymbolClass
+ Hydra.Java.Dsl.Environment: javaSymbolClassNullaryFunction :: TypedTerm JavaSymbolClass
+ Hydra.Java.Dsl.Environment: javaSymbolClassUnaryFunction :: TypedTerm JavaSymbolClass
+ Hydra.Java.Dsl.Language: javaLanguage :: TypedTerm Language
+ Hydra.Java.Dsl.Language: javaMaxTupleLength :: TypedTerm Int
+ Hydra.Java.Dsl.Language: reservedWords :: TypedTerm (Set String)
+ Hydra.Java.Dsl.Syntax: additionalBound :: TypedTerm InterfaceType -> TypedTerm AdditionalBound
+ Hydra.Java.Dsl.Syntax: additionalBoundAdditionalBound :: TypedName AdditionalBound
+ Hydra.Java.Dsl.Syntax: additiveExpressionAdditiveExpression :: TypedName AdditiveExpression
+ Hydra.Java.Dsl.Syntax: additiveExpressionMinus :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
+ Hydra.Java.Dsl.Syntax: additiveExpressionPlus :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
+ Hydra.Java.Dsl.Syntax: additiveExpressionUnary :: TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression
+ Hydra.Java.Dsl.Syntax: additiveExpression_Binary :: TypedTerm AdditiveExpression -> TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression_Binary
+ Hydra.Java.Dsl.Syntax: additiveExpression_BinaryAdditiveExpression_Binary :: TypedName AdditiveExpression_Binary
+ Hydra.Java.Dsl.Syntax: additiveExpression_BinaryLhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression
+ Hydra.Java.Dsl.Syntax: additiveExpression_BinaryRhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: additiveExpression_BinaryWithLhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm AdditiveExpression -> TypedTerm AdditiveExpression_Binary
+ Hydra.Java.Dsl.Syntax: additiveExpression_BinaryWithRhs :: TypedTerm AdditiveExpression_Binary -> TypedTerm MultiplicativeExpression -> TypedTerm AdditiveExpression_Binary
+ Hydra.Java.Dsl.Syntax: ambiguousName :: TypedTerm [Identifier] -> TypedTerm AmbiguousName
+ Hydra.Java.Dsl.Syntax: ambiguousNameAmbiguousName :: TypedName AmbiguousName
+ Hydra.Java.Dsl.Syntax: andExpression :: TypedTerm [EqualityExpression] -> TypedTerm AndExpression
+ Hydra.Java.Dsl.Syntax: andExpressionAndExpression :: TypedName AndExpression
+ Hydra.Java.Dsl.Syntax: annotatedIdentifier :: TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm AnnotatedIdentifier
+ Hydra.Java.Dsl.Syntax: annotatedIdentifierAnnotatedIdentifier :: TypedName AnnotatedIdentifier
+ Hydra.Java.Dsl.Syntax: annotatedIdentifierAnnotations :: TypedTerm AnnotatedIdentifier -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: annotatedIdentifierIdentifier :: TypedTerm AnnotatedIdentifier -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: annotatedIdentifierWithAnnotations :: TypedTerm AnnotatedIdentifier -> TypedTerm [Annotation] -> TypedTerm AnnotatedIdentifier
+ Hydra.Java.Dsl.Syntax: annotatedIdentifierWithIdentifier :: TypedTerm AnnotatedIdentifier -> TypedTerm Identifier -> TypedTerm AnnotatedIdentifier
+ Hydra.Java.Dsl.Syntax: annotationAnnotation :: TypedName Annotation
+ Hydra.Java.Dsl.Syntax: annotationInterfaceBody :: TypedTerm [AnnotationInterfaceMemberDeclaration] -> TypedTerm AnnotationInterfaceBody
+ Hydra.Java.Dsl.Syntax: annotationInterfaceBodyAnnotationInterfaceBody :: TypedName AnnotationInterfaceBody
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclaration :: TypedTerm [InterfaceModifier] -> TypedTerm TypeIdentifier -> TypedTerm AnnotationInterfaceBody -> TypedTerm AnnotationInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationAnnotationInterfaceDeclaration :: TypedName AnnotationInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationBody :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm AnnotationInterfaceBody
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationIdentifier :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationModifiers :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm [InterfaceModifier]
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationWithBody :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm AnnotationInterfaceBody -> TypedTerm AnnotationInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationWithIdentifier :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm TypeIdentifier -> TypedTerm AnnotationInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceDeclarationWithModifiers :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm [InterfaceModifier] -> TypedTerm AnnotationInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclaration :: TypedTerm [AnnotationInterfaceElementModifier] -> TypedTerm UnannType -> TypedTerm Identifier -> TypedTerm (Maybe Dims) -> TypedTerm (Maybe DefaultValue) -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration :: TypedName AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationDefault :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe DefaultValue)
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationDims :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe Dims)
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationIdentifier :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationModifiers :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm [AnnotationInterfaceElementModifier]
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationType :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationWithDefault :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe DefaultValue) -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationWithDims :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm (Maybe Dims) -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationWithIdentifier :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm Identifier -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationWithModifiers :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm [AnnotationInterfaceElementModifier] -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementDeclarationWithType :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm UnannType -> TypedTerm AnnotationInterfaceElementDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementModifierAbstract :: TypedTerm AnnotationInterfaceElementModifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementModifierAnnotation :: TypedTerm Annotation -> TypedTerm AnnotationInterfaceElementModifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementModifierAnnotationInterfaceElementModifier :: TypedName AnnotationInterfaceElementModifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceElementModifierPublic :: TypedTerm AnnotationInterfaceElementModifier
+ Hydra.Java.Dsl.Syntax: annotationInterfaceMemberDeclarationAnnotationInterface :: TypedTerm AnnotationInterfaceElementDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration :: TypedName AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceMemberDeclarationConstant :: TypedTerm ConstantDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: annotationInterfaceMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: annotationMarker :: TypedTerm MarkerAnnotation -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: annotationNormal :: TypedTerm NormalAnnotation -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: annotationSingleElement :: TypedTerm SingleElementAnnotation -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: arrayAccess :: TypedTerm (Maybe Expression) -> TypedTerm ArrayAccess_Variant -> TypedTerm ArrayAccess
+ Hydra.Java.Dsl.Syntax: arrayAccessArrayAccess :: TypedName ArrayAccess
+ Hydra.Java.Dsl.Syntax: arrayAccessExpression :: TypedTerm ArrayAccess -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: arrayAccessVariant :: TypedTerm ArrayAccess -> TypedTerm ArrayAccess_Variant
+ Hydra.Java.Dsl.Syntax: arrayAccessWithExpression :: TypedTerm ArrayAccess -> TypedTerm (Maybe Expression) -> TypedTerm ArrayAccess
+ Hydra.Java.Dsl.Syntax: arrayAccessWithVariant :: TypedTerm ArrayAccess -> TypedTerm ArrayAccess_Variant -> TypedTerm ArrayAccess
+ Hydra.Java.Dsl.Syntax: arrayAccess_VariantArrayAccess_Variant :: TypedName ArrayAccess_Variant
+ Hydra.Java.Dsl.Syntax: arrayAccess_VariantArrayCreationWithInitializer :: TypedTerm ArrayCreationExpressionWithInitializer -> TypedTerm ArrayAccess_Variant
+ Hydra.Java.Dsl.Syntax: arrayAccess_VariantName :: TypedTerm ExpressionName -> TypedTerm ArrayAccess_Variant
+ Hydra.Java.Dsl.Syntax: arrayAccess_VariantPrimary :: TypedTerm PrimaryNoNewArrayExpression -> TypedTerm ArrayAccess_Variant
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionArrayCreationExpression :: TypedName ArrayCreationExpression
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionNoInit :: TypedTerm ArrayCreationExpressionWithoutInitializer -> TypedTerm ArrayCreationExpression
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInit :: TypedTerm ArrayCreationExpressionWithInitializer -> TypedTerm ArrayCreationExpression
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer :: TypedName ArrayCreationExpressionWithInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializerClassOrInterface :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayCreationExpressionWithInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializerPrimitive :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayCreationExpressionWithInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [Dims] -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface :: TypedName ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm [Dims]
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm [Dims] -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType :: TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Dims] -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveArray :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive :: TypedName ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveDims :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm [Dims]
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveType :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithArray :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm ArrayInitializer -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithDims :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm [Dims] -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithInitializer_PrimitiveWithType :: TypedTerm ArrayCreationExpressionWithInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer :: TypedName ArrayCreationExpressionWithoutInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializerClassOrInterface :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ArrayCreationExpressionWithoutInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializerPrimitive :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm ArrayCreationExpressionWithoutInitializer
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [DimExpr] -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface :: TypedName ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm [DimExpr]
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm (Maybe Dims)
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm [DimExpr] -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType :: TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [DimExpr] -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive :: TypedName ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm [DimExpr]
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm (Maybe Dims)
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveType :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm [DimExpr] -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithDims :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm (Maybe Dims) -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayCreationExpressionWithoutInitializer_PrimitiveWithType :: TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Dsl.Syntax: arrayInitializer :: TypedTerm [[VariableInitializer]] -> TypedTerm ArrayInitializer
+ Hydra.Java.Dsl.Syntax: arrayInitializerArrayInitializer :: TypedName ArrayInitializer
+ Hydra.Java.Dsl.Syntax: arrayType :: TypedTerm Dims -> TypedTerm ArrayType_Variant -> TypedTerm ArrayType
+ Hydra.Java.Dsl.Syntax: arrayTypeArrayType :: TypedName ArrayType
+ Hydra.Java.Dsl.Syntax: arrayTypeDims :: TypedTerm ArrayType -> TypedTerm Dims
+ Hydra.Java.Dsl.Syntax: arrayTypeVariant :: TypedTerm ArrayType -> TypedTerm ArrayType_Variant
+ Hydra.Java.Dsl.Syntax: arrayTypeWithDims :: TypedTerm ArrayType -> TypedTerm Dims -> TypedTerm ArrayType
+ Hydra.Java.Dsl.Syntax: arrayTypeWithVariant :: TypedTerm ArrayType -> TypedTerm ArrayType_Variant -> TypedTerm ArrayType
+ Hydra.Java.Dsl.Syntax: arrayType_VariantArrayType_Variant :: TypedName ArrayType_Variant
+ Hydra.Java.Dsl.Syntax: arrayType_VariantClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm ArrayType_Variant
+ Hydra.Java.Dsl.Syntax: arrayType_VariantPrimitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm ArrayType_Variant
+ Hydra.Java.Dsl.Syntax: arrayType_VariantVariable :: TypedTerm TypeVariable -> TypedTerm ArrayType_Variant
+ Hydra.Java.Dsl.Syntax: assertStatementAssertStatement :: TypedName AssertStatement
+ Hydra.Java.Dsl.Syntax: assertStatementPair :: TypedTerm AssertStatement_Pair -> TypedTerm AssertStatement
+ Hydra.Java.Dsl.Syntax: assertStatementSingle :: TypedTerm Expression -> TypedTerm AssertStatement
+ Hydra.Java.Dsl.Syntax: assertStatement_Pair :: TypedTerm Expression -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
+ Hydra.Java.Dsl.Syntax: assertStatement_PairAssertStatement_Pair :: TypedName AssertStatement_Pair
+ Hydra.Java.Dsl.Syntax: assertStatement_PairFirst :: TypedTerm AssertStatement_Pair -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: assertStatement_PairSecond :: TypedTerm AssertStatement_Pair -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: assertStatement_PairWithFirst :: TypedTerm AssertStatement_Pair -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
+ Hydra.Java.Dsl.Syntax: assertStatement_PairWithSecond :: TypedTerm AssertStatement_Pair -> TypedTerm Expression -> TypedTerm AssertStatement_Pair
+ Hydra.Java.Dsl.Syntax: assignment :: TypedTerm LeftHandSide -> TypedTerm AssignmentOperator -> TypedTerm Expression -> TypedTerm Assignment
+ Hydra.Java.Dsl.Syntax: assignmentAssignment :: TypedName Assignment
+ Hydra.Java.Dsl.Syntax: assignmentExpression :: TypedTerm Assignment -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: assignmentExpressionAssignment :: TypedTerm Assignment -> TypedTerm AssignmentExpression
+ Hydra.Java.Dsl.Syntax: assignmentExpressionAssignmentExpression :: TypedName AssignmentExpression
+ Hydra.Java.Dsl.Syntax: assignmentExpressionConditional :: TypedTerm ConditionalExpression -> TypedTerm AssignmentExpression
+ Hydra.Java.Dsl.Syntax: assignmentLhs :: TypedTerm Assignment -> TypedTerm LeftHandSide
+ Hydra.Java.Dsl.Syntax: assignmentOp :: TypedTerm Assignment -> TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorAnd :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorAssignmentOperator :: TypedName AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorDiv :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorMinus :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorMod :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorOr :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorPlus :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorShiftLeft :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorShiftRight :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorShiftRightZeroFill :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorSimple :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorTimes :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentOperatorXor :: TypedTerm AssignmentOperator
+ Hydra.Java.Dsl.Syntax: assignmentWithExpression :: TypedTerm Assignment -> TypedTerm Expression -> TypedTerm Assignment
+ Hydra.Java.Dsl.Syntax: assignmentWithLhs :: TypedTerm Assignment -> TypedTerm LeftHandSide -> TypedTerm Assignment
+ Hydra.Java.Dsl.Syntax: assignmentWithOp :: TypedTerm Assignment -> TypedTerm AssignmentOperator -> TypedTerm Assignment
+ Hydra.Java.Dsl.Syntax: basicForStatement :: TypedTerm ForCond -> TypedTerm Statement -> TypedTerm BasicForStatement
+ Hydra.Java.Dsl.Syntax: basicForStatementBasicForStatement :: TypedName BasicForStatement
+ Hydra.Java.Dsl.Syntax: basicForStatementBody :: TypedTerm BasicForStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: basicForStatementCond :: TypedTerm BasicForStatement -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIf :: TypedTerm ForCond -> TypedTerm StatementNoShortIf -> TypedTerm BasicForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIfBasicForStatementNoShortIf :: TypedName BasicForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIfBody :: TypedTerm BasicForStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIfCond :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIfWithBody :: TypedTerm BasicForStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm BasicForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: basicForStatementNoShortIfWithCond :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForCond -> TypedTerm BasicForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: basicForStatementWithBody :: TypedTerm BasicForStatement -> TypedTerm Statement -> TypedTerm BasicForStatement
+ Hydra.Java.Dsl.Syntax: basicForStatementWithCond :: TypedTerm BasicForStatement -> TypedTerm ForCond -> TypedTerm BasicForStatement
+ Hydra.Java.Dsl.Syntax: block :: TypedTerm [BlockStatement] -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: blockBlock :: TypedName Block
+ Hydra.Java.Dsl.Syntax: blockStatementBlockStatement :: TypedName BlockStatement
+ Hydra.Java.Dsl.Syntax: blockStatementLocalClassOrInterface :: TypedTerm LocalClassOrInterfaceDeclaration -> TypedTerm BlockStatement
+ Hydra.Java.Dsl.Syntax: blockStatementLocalVariableDeclaration :: TypedTerm LocalVariableDeclarationStatement -> TypedTerm BlockStatement
+ Hydra.Java.Dsl.Syntax: blockStatementStatement :: TypedTerm Statement -> TypedTerm BlockStatement
+ Hydra.Java.Dsl.Syntax: booleanArrayArray :: TypedTerm BooleanArray -> TypedTerm BooleanArray
+ Hydra.Java.Dsl.Syntax: booleanArrayBooleanArray :: TypedName BooleanArray
+ Hydra.Java.Dsl.Syntax: booleanArraySimple :: TypedTerm BooleanArray
+ Hydra.Java.Dsl.Syntax: breakStatement :: TypedTerm (Maybe Identifier) -> TypedTerm BreakStatement
+ Hydra.Java.Dsl.Syntax: breakStatementBreakStatement :: TypedName BreakStatement
+ Hydra.Java.Dsl.Syntax: caseConstant :: TypedTerm ConditionalExpression -> TypedTerm CaseConstant
+ Hydra.Java.Dsl.Syntax: caseConstantCaseConstant :: TypedName CaseConstant
+ Hydra.Java.Dsl.Syntax: casePattern :: TypedTerm Pattern -> TypedTerm (Maybe Guard) -> TypedTerm CasePattern
+ Hydra.Java.Dsl.Syntax: casePatternCasePattern :: TypedName CasePattern
+ Hydra.Java.Dsl.Syntax: casePatternGuard :: TypedTerm CasePattern -> TypedTerm (Maybe Guard)
+ Hydra.Java.Dsl.Syntax: casePatternPattern :: TypedTerm CasePattern -> TypedTerm Pattern
+ Hydra.Java.Dsl.Syntax: casePatternWithGuard :: TypedTerm CasePattern -> TypedTerm (Maybe Guard) -> TypedTerm CasePattern
+ Hydra.Java.Dsl.Syntax: casePatternWithPattern :: TypedTerm CasePattern -> TypedTerm Pattern -> TypedTerm CasePattern
+ Hydra.Java.Dsl.Syntax: castExpressionCastExpression :: TypedName CastExpression
+ Hydra.Java.Dsl.Syntax: castExpressionLambda :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression
+ Hydra.Java.Dsl.Syntax: castExpressionNotPlusMinus :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression
+ Hydra.Java.Dsl.Syntax: castExpressionPrimitive :: TypedTerm CastExpression_Primitive -> TypedTerm CastExpression
+ Hydra.Java.Dsl.Syntax: castExpression_Lambda :: TypedTerm CastExpression_RefAndBounds -> TypedTerm LambdaExpression -> TypedTerm CastExpression_Lambda
+ Hydra.Java.Dsl.Syntax: castExpression_LambdaCastExpression_Lambda :: TypedName CastExpression_Lambda
+ Hydra.Java.Dsl.Syntax: castExpression_LambdaExpression :: TypedTerm CastExpression_Lambda -> TypedTerm LambdaExpression
+ Hydra.Java.Dsl.Syntax: castExpression_LambdaRefAndBounds :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: castExpression_LambdaWithExpression :: TypedTerm CastExpression_Lambda -> TypedTerm LambdaExpression -> TypedTerm CastExpression_Lambda
+ Hydra.Java.Dsl.Syntax: castExpression_LambdaWithRefAndBounds :: TypedTerm CastExpression_Lambda -> TypedTerm CastExpression_RefAndBounds -> TypedTerm CastExpression_Lambda
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinus :: TypedTerm CastExpression_RefAndBounds -> TypedTerm UnaryExpression -> TypedTerm CastExpression_NotPlusMinus
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinusCastExpression_NotPlusMinus :: TypedName CastExpression_NotPlusMinus
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinusExpression :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinusRefAndBounds :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinusWithExpression :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm UnaryExpression -> TypedTerm CastExpression_NotPlusMinus
+ Hydra.Java.Dsl.Syntax: castExpression_NotPlusMinusWithRefAndBounds :: TypedTerm CastExpression_NotPlusMinus -> TypedTerm CastExpression_RefAndBounds -> TypedTerm CastExpression_NotPlusMinus
+ Hydra.Java.Dsl.Syntax: castExpression_Primitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm UnaryExpression -> TypedTerm CastExpression_Primitive
+ Hydra.Java.Dsl.Syntax: castExpression_PrimitiveCastExpression_Primitive :: TypedName CastExpression_Primitive
+ Hydra.Java.Dsl.Syntax: castExpression_PrimitiveExpression :: TypedTerm CastExpression_Primitive -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: castExpression_PrimitiveType :: TypedTerm CastExpression_Primitive -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: castExpression_PrimitiveWithExpression :: TypedTerm CastExpression_Primitive -> TypedTerm UnaryExpression -> TypedTerm CastExpression_Primitive
+ Hydra.Java.Dsl.Syntax: castExpression_PrimitiveWithType :: TypedTerm CastExpression_Primitive -> TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm CastExpression_Primitive
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBounds :: TypedTerm ReferenceType -> TypedTerm [AdditionalBound] -> TypedTerm CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBoundsBounds :: TypedTerm CastExpression_RefAndBounds -> TypedTerm [AdditionalBound]
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBoundsCastExpression_RefAndBounds :: TypedName CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBoundsType :: TypedTerm CastExpression_RefAndBounds -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBoundsWithBounds :: TypedTerm CastExpression_RefAndBounds -> TypedTerm [AdditionalBound] -> TypedTerm CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: castExpression_RefAndBoundsWithType :: TypedTerm CastExpression_RefAndBounds -> TypedTerm ReferenceType -> TypedTerm CastExpression_RefAndBounds
+ Hydra.Java.Dsl.Syntax: catchClause :: TypedTerm (Maybe CatchFormalParameter) -> TypedTerm Block -> TypedTerm CatchClause
+ Hydra.Java.Dsl.Syntax: catchClauseBlock :: TypedTerm CatchClause -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: catchClauseCatchClause :: TypedName CatchClause
+ Hydra.Java.Dsl.Syntax: catchClauseParameter :: TypedTerm CatchClause -> TypedTerm (Maybe CatchFormalParameter)
+ Hydra.Java.Dsl.Syntax: catchClauseWithBlock :: TypedTerm CatchClause -> TypedTerm Block -> TypedTerm CatchClause
+ Hydra.Java.Dsl.Syntax: catchClauseWithParameter :: TypedTerm CatchClause -> TypedTerm (Maybe CatchFormalParameter) -> TypedTerm CatchClause
+ Hydra.Java.Dsl.Syntax: catchFormalParameter :: TypedTerm [VariableModifier] -> TypedTerm CatchType -> TypedTerm VariableDeclaratorId -> TypedTerm CatchFormalParameter
+ Hydra.Java.Dsl.Syntax: catchFormalParameterCatchFormalParameter :: TypedName CatchFormalParameter
+ Hydra.Java.Dsl.Syntax: catchFormalParameterId :: TypedTerm CatchFormalParameter -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: catchFormalParameterModifiers :: TypedTerm CatchFormalParameter -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: catchFormalParameterType :: TypedTerm CatchFormalParameter -> TypedTerm CatchType
+ Hydra.Java.Dsl.Syntax: catchFormalParameterWithId :: TypedTerm CatchFormalParameter -> TypedTerm VariableDeclaratorId -> TypedTerm CatchFormalParameter
+ Hydra.Java.Dsl.Syntax: catchFormalParameterWithModifiers :: TypedTerm CatchFormalParameter -> TypedTerm [VariableModifier] -> TypedTerm CatchFormalParameter
+ Hydra.Java.Dsl.Syntax: catchFormalParameterWithType :: TypedTerm CatchFormalParameter -> TypedTerm CatchType -> TypedTerm CatchFormalParameter
+ Hydra.Java.Dsl.Syntax: catchType :: TypedTerm UnannClassType -> TypedTerm [ClassType] -> TypedTerm CatchType
+ Hydra.Java.Dsl.Syntax: catchTypeCatchType :: TypedName CatchType
+ Hydra.Java.Dsl.Syntax: catchTypeType :: TypedTerm CatchType -> TypedTerm UnannClassType
+ Hydra.Java.Dsl.Syntax: catchTypeTypes :: TypedTerm CatchType -> TypedTerm [ClassType]
+ Hydra.Java.Dsl.Syntax: catchTypeWithType :: TypedTerm CatchType -> TypedTerm UnannClassType -> TypedTerm CatchType
+ Hydra.Java.Dsl.Syntax: catchTypeWithTypes :: TypedTerm CatchType -> TypedTerm [ClassType] -> TypedTerm CatchType
+ Hydra.Java.Dsl.Syntax: catches :: TypedTerm [CatchClause] -> TypedTerm Catches
+ Hydra.Java.Dsl.Syntax: catchesCatches :: TypedName Catches
+ Hydra.Java.Dsl.Syntax: classBody :: TypedTerm [ClassBodyDeclarationWithComments] -> TypedTerm ClassBody
+ Hydra.Java.Dsl.Syntax: classBodyClassBody :: TypedName ClassBody
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationClassBodyDeclaration :: TypedName ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationClassMember :: TypedTerm ClassMemberDeclaration -> TypedTerm ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationConstructorDeclaration :: TypedTerm ConstructorDeclaration -> TypedTerm ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationInstanceInitializer :: TypedTerm InstanceInitializer -> TypedTerm ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationStaticInitializer :: TypedTerm StaticInitializer -> TypedTerm ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithComments :: TypedTerm ClassBodyDeclaration -> TypedTerm (Maybe String) -> TypedTerm ClassBodyDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithCommentsClassBodyDeclarationWithComments :: TypedName ClassBodyDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithCommentsComments :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm (Maybe String)
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithCommentsValue :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm ClassBodyDeclaration
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithCommentsWithComments :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm ClassBodyDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: classBodyDeclarationWithCommentsWithValue :: TypedTerm ClassBodyDeclarationWithComments -> TypedTerm ClassBodyDeclaration -> TypedTerm ClassBodyDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: classDeclarationClassDeclaration :: TypedName ClassDeclaration
+ Hydra.Java.Dsl.Syntax: classDeclarationEnum :: TypedTerm EnumDeclaration -> TypedTerm ClassDeclaration
+ Hydra.Java.Dsl.Syntax: classDeclarationNormal :: TypedTerm NormalClassDeclaration -> TypedTerm ClassDeclaration
+ Hydra.Java.Dsl.Syntax: classDeclarationRecord :: TypedTerm RecordDeclaration -> TypedTerm ClassDeclaration
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpression :: TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier) -> TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpressionClassInstanceCreationExpression :: TypedName ClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpressionExpression :: TypedTerm ClassInstanceCreationExpression -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpressionQualifier :: TypedTerm ClassInstanceCreationExpression -> TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier)
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpressionWithExpression :: TypedTerm ClassInstanceCreationExpression -> TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpressionWithQualifier :: TypedTerm ClassInstanceCreationExpression -> TypedTerm (Maybe ClassInstanceCreationExpression_Qualifier) -> TypedTerm ClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier :: TypedName ClassInstanceCreationExpression_Qualifier
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpression_QualifierExpression :: TypedTerm ExpressionName -> TypedTerm ClassInstanceCreationExpression_Qualifier
+ Hydra.Java.Dsl.Syntax: classInstanceCreationExpression_QualifierPrimary :: TypedTerm Primary -> TypedTerm ClassInstanceCreationExpression_Qualifier
+ Hydra.Java.Dsl.Syntax: classLiteralBoolean :: TypedTerm BooleanArray -> TypedTerm ClassLiteral
+ Hydra.Java.Dsl.Syntax: classLiteralClassLiteral :: TypedName ClassLiteral
+ Hydra.Java.Dsl.Syntax: classLiteralNumericType :: TypedTerm NumericTypeArray -> TypedTerm ClassLiteral
+ Hydra.Java.Dsl.Syntax: classLiteralType :: TypedTerm TypeNameArray -> TypedTerm ClassLiteral
+ Hydra.Java.Dsl.Syntax: classLiteralVoid :: TypedTerm ClassLiteral
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationClassMemberDeclaration :: TypedName ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationField :: TypedTerm FieldDeclaration -> TypedTerm ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationMethod :: TypedTerm MethodDeclaration -> TypedTerm ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classMemberDeclarationNone :: TypedTerm ClassMemberDeclaration
+ Hydra.Java.Dsl.Syntax: classModifierAbstract :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierAnnotation :: TypedTerm Annotation -> TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierClassModifier :: TypedName ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierFinal :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierNonSealed :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierPrivate :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierProtected :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierPublic :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierSealed :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierStatic :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classModifierStrictfp :: TypedTerm ClassModifier
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeClass :: TypedTerm ClassType -> TypedTerm ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeClassOrInterfaceType :: TypedName ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeInterface :: TypedTerm InterfaceType -> TypedTerm ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiate :: TypedTerm [AnnotatedIdentifier] -> TypedTerm (Maybe TypeArgumentsOrDiamond) -> TypedTerm ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate :: TypedName ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiateIdentifiers :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [AnnotatedIdentifier]
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiateTypeArguments :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm (Maybe TypeArgumentsOrDiamond)
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiateWithIdentifiers :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [AnnotatedIdentifier] -> TypedTerm ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Dsl.Syntax: classOrInterfaceTypeToInstantiateWithTypeArguments :: TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm (Maybe TypeArgumentsOrDiamond) -> TypedTerm ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Dsl.Syntax: classType :: TypedTerm [Annotation] -> TypedTerm ClassTypeQualifier -> TypedTerm TypeIdentifier -> TypedTerm [TypeArgument] -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: classTypeAnnotations :: TypedTerm ClassType -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: classTypeArguments :: TypedTerm ClassType -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: classTypeClassType :: TypedName ClassType
+ Hydra.Java.Dsl.Syntax: classTypeIdentifier :: TypedTerm ClassType -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: classTypeQualifier :: TypedTerm ClassType -> TypedTerm ClassTypeQualifier
+ Hydra.Java.Dsl.Syntax: classTypeQualifierClassTypeQualifier :: TypedName ClassTypeQualifier
+ Hydra.Java.Dsl.Syntax: classTypeQualifierNone :: TypedTerm ClassTypeQualifier
+ Hydra.Java.Dsl.Syntax: classTypeQualifierPackage :: TypedTerm PackageName -> TypedTerm ClassTypeQualifier
+ Hydra.Java.Dsl.Syntax: classTypeQualifierParent :: TypedTerm ClassOrInterfaceType -> TypedTerm ClassTypeQualifier
+ Hydra.Java.Dsl.Syntax: classTypeWithAnnotations :: TypedTerm ClassType -> TypedTerm [Annotation] -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: classTypeWithArguments :: TypedTerm ClassType -> TypedTerm [TypeArgument] -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: classTypeWithIdentifier :: TypedTerm ClassType -> TypedTerm TypeIdentifier -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: classTypeWithQualifier :: TypedTerm ClassType -> TypedTerm ClassTypeQualifier -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclaration :: TypedTerm [ConstructorModifier] -> TypedTerm SimpleTypeName -> TypedTerm ConstructorBody -> TypedTerm CompactConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationBody :: TypedTerm CompactConstructorDeclaration -> TypedTerm ConstructorBody
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationCompactConstructorDeclaration :: TypedName CompactConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationModifiers :: TypedTerm CompactConstructorDeclaration -> TypedTerm [ConstructorModifier]
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationName :: TypedTerm CompactConstructorDeclaration -> TypedTerm SimpleTypeName
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationWithBody :: TypedTerm CompactConstructorDeclaration -> TypedTerm ConstructorBody -> TypedTerm CompactConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationWithModifiers :: TypedTerm CompactConstructorDeclaration -> TypedTerm [ConstructorModifier] -> TypedTerm CompactConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: compactConstructorDeclarationWithName :: TypedTerm CompactConstructorDeclaration -> TypedTerm SimpleTypeName -> TypedTerm CompactConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: compilationUnitCompilationUnit :: TypedName CompilationUnit
+ Hydra.Java.Dsl.Syntax: compilationUnitModular :: TypedTerm ModularCompilationUnit -> TypedTerm CompilationUnit
+ Hydra.Java.Dsl.Syntax: compilationUnitOrdinary :: TypedTerm OrdinaryCompilationUnit -> TypedTerm CompilationUnit
+ Hydra.Java.Dsl.Syntax: conditionalAndExpression :: TypedTerm [InclusiveOrExpression] -> TypedTerm ConditionalAndExpression
+ Hydra.Java.Dsl.Syntax: conditionalAndExpressionConditionalAndExpression :: TypedName ConditionalAndExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpressionConditionalExpression :: TypedName ConditionalExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpressionSimple :: TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpressionTernaryCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpressionTernaryLambda :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCond :: TypedTerm ConditionalOrExpression -> TypedTerm Expression -> TypedTerm ConditionalExpression -> TypedTerm ConditionalExpression_TernaryCond
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalOrExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondConditionalExpression_TernaryCond :: TypedName ConditionalExpression_TernaryCond
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondIfFalse :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondIfTrue :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondWithCond :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression_TernaryCond
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondWithIfFalse :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm ConditionalExpression -> TypedTerm ConditionalExpression_TernaryCond
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryCondWithIfTrue :: TypedTerm ConditionalExpression_TernaryCond -> TypedTerm Expression -> TypedTerm ConditionalExpression_TernaryCond
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambda :: TypedTerm ConditionalOrExpression -> TypedTerm Expression -> TypedTerm LambdaExpression -> TypedTerm ConditionalExpression_TernaryLambda
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaCond :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalOrExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda :: TypedName ConditionalExpression_TernaryLambda
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaIfFalse :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm LambdaExpression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaIfTrue :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaWithCond :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm ConditionalOrExpression -> TypedTerm ConditionalExpression_TernaryLambda
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaWithIfFalse :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm LambdaExpression -> TypedTerm ConditionalExpression_TernaryLambda
+ Hydra.Java.Dsl.Syntax: conditionalExpression_TernaryLambdaWithIfTrue :: TypedTerm ConditionalExpression_TernaryLambda -> TypedTerm Expression -> TypedTerm ConditionalExpression_TernaryLambda
+ Hydra.Java.Dsl.Syntax: conditionalOrExpression :: TypedTerm [ConditionalAndExpression] -> TypedTerm ConditionalOrExpression
+ Hydra.Java.Dsl.Syntax: conditionalOrExpressionConditionalOrExpression :: TypedName ConditionalOrExpression
+ Hydra.Java.Dsl.Syntax: constantDeclaration :: TypedTerm [ConstantModifier] -> TypedTerm UnannType -> TypedTerm [VariableDeclarator] -> TypedTerm ConstantDeclaration
+ Hydra.Java.Dsl.Syntax: constantDeclarationConstantDeclaration :: TypedName ConstantDeclaration
+ Hydra.Java.Dsl.Syntax: constantDeclarationModifiers :: TypedTerm ConstantDeclaration -> TypedTerm [ConstantModifier]
+ Hydra.Java.Dsl.Syntax: constantDeclarationType :: TypedTerm ConstantDeclaration -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: constantDeclarationVariables :: TypedTerm ConstantDeclaration -> TypedTerm [VariableDeclarator]
+ Hydra.Java.Dsl.Syntax: constantDeclarationWithModifiers :: TypedTerm ConstantDeclaration -> TypedTerm [ConstantModifier] -> TypedTerm ConstantDeclaration
+ Hydra.Java.Dsl.Syntax: constantDeclarationWithType :: TypedTerm ConstantDeclaration -> TypedTerm UnannType -> TypedTerm ConstantDeclaration
+ Hydra.Java.Dsl.Syntax: constantDeclarationWithVariables :: TypedTerm ConstantDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm ConstantDeclaration
+ Hydra.Java.Dsl.Syntax: constantExpression :: TypedTerm Expression -> TypedTerm ConstantExpression
+ Hydra.Java.Dsl.Syntax: constantExpressionConstantExpression :: TypedName ConstantExpression
+ Hydra.Java.Dsl.Syntax: constantModifierAnnotation :: TypedTerm Annotation -> TypedTerm ConstantModifier
+ Hydra.Java.Dsl.Syntax: constantModifierConstantModifier :: TypedName ConstantModifier
+ Hydra.Java.Dsl.Syntax: constantModifierFinal :: TypedTerm ConstantModifier
+ Hydra.Java.Dsl.Syntax: constantModifierPublic :: TypedTerm ConstantModifier
+ Hydra.Java.Dsl.Syntax: constantModifierStatic :: TypedTerm ConstantModifier
+ Hydra.Java.Dsl.Syntax: constructorBody :: TypedTerm (Maybe ExplicitConstructorInvocation) -> TypedTerm [BlockStatement] -> TypedTerm ConstructorBody
+ Hydra.Java.Dsl.Syntax: constructorBodyConstructorBody :: TypedName ConstructorBody
+ Hydra.Java.Dsl.Syntax: constructorBodyInvocation :: TypedTerm ConstructorBody -> TypedTerm (Maybe ExplicitConstructorInvocation)
+ Hydra.Java.Dsl.Syntax: constructorBodyStatements :: TypedTerm ConstructorBody -> TypedTerm [BlockStatement]
+ Hydra.Java.Dsl.Syntax: constructorBodyWithInvocation :: TypedTerm ConstructorBody -> TypedTerm (Maybe ExplicitConstructorInvocation) -> TypedTerm ConstructorBody
+ Hydra.Java.Dsl.Syntax: constructorBodyWithStatements :: TypedTerm ConstructorBody -> TypedTerm [BlockStatement] -> TypedTerm ConstructorBody
+ Hydra.Java.Dsl.Syntax: constructorDeclaration :: TypedTerm [ConstructorModifier] -> TypedTerm ConstructorDeclarator -> TypedTerm (Maybe Throws) -> TypedTerm ConstructorBody -> TypedTerm ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarationBody :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorBody
+ Hydra.Java.Dsl.Syntax: constructorDeclarationConstructor :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclarationConstructorDeclaration :: TypedName ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarationModifiers :: TypedTerm ConstructorDeclaration -> TypedTerm [ConstructorModifier]
+ Hydra.Java.Dsl.Syntax: constructorDeclarationThrows :: TypedTerm ConstructorDeclaration -> TypedTerm (Maybe Throws)
+ Hydra.Java.Dsl.Syntax: constructorDeclarationWithBody :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorBody -> TypedTerm ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarationWithConstructor :: TypedTerm ConstructorDeclaration -> TypedTerm ConstructorDeclarator -> TypedTerm ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarationWithModifiers :: TypedTerm ConstructorDeclaration -> TypedTerm [ConstructorModifier] -> TypedTerm ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarationWithThrows :: TypedTerm ConstructorDeclaration -> TypedTerm (Maybe Throws) -> TypedTerm ConstructorDeclaration
+ Hydra.Java.Dsl.Syntax: constructorDeclarator :: TypedTerm [TypeParameter] -> TypedTerm SimpleTypeName -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm [FormalParameter] -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorConstructorDeclarator :: TypedName ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorFormalParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [FormalParameter]
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorName :: TypedTerm ConstructorDeclarator -> TypedTerm SimpleTypeName
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [TypeParameter]
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorReceiverParameter :: TypedTerm ConstructorDeclarator -> TypedTerm (Maybe ReceiverParameter)
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorWithFormalParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [FormalParameter] -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorWithName :: TypedTerm ConstructorDeclarator -> TypedTerm SimpleTypeName -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorWithParameters :: TypedTerm ConstructorDeclarator -> TypedTerm [TypeParameter] -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorDeclaratorWithReceiverParameter :: TypedTerm ConstructorDeclarator -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm ConstructorDeclarator
+ Hydra.Java.Dsl.Syntax: constructorModifierAnnotation :: TypedTerm Annotation -> TypedTerm ConstructorModifier
+ Hydra.Java.Dsl.Syntax: constructorModifierConstructorModifier :: TypedName ConstructorModifier
+ Hydra.Java.Dsl.Syntax: constructorModifierPrivate :: TypedTerm ConstructorModifier
+ Hydra.Java.Dsl.Syntax: constructorModifierProtected :: TypedTerm ConstructorModifier
+ Hydra.Java.Dsl.Syntax: constructorModifierPublic :: TypedTerm ConstructorModifier
+ Hydra.Java.Dsl.Syntax: continueStatement :: TypedTerm (Maybe Identifier) -> TypedTerm ContinueStatement
+ Hydra.Java.Dsl.Syntax: continueStatementContinueStatement :: TypedName ContinueStatement
+ Hydra.Java.Dsl.Syntax: defaultValue :: TypedTerm ElementValue -> TypedTerm DefaultValue
+ Hydra.Java.Dsl.Syntax: defaultValueDefaultValue :: TypedName DefaultValue
+ Hydra.Java.Dsl.Syntax: dimExpr :: TypedTerm [Annotation] -> TypedTerm (Maybe Expression) -> TypedTerm DimExpr
+ Hydra.Java.Dsl.Syntax: dimExprAnnotations :: TypedTerm DimExpr -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: dimExprDimExpr :: TypedName DimExpr
+ Hydra.Java.Dsl.Syntax: dimExprExpression :: TypedTerm DimExpr -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: dimExprWithAnnotations :: TypedTerm DimExpr -> TypedTerm [Annotation] -> TypedTerm DimExpr
+ Hydra.Java.Dsl.Syntax: dimExprWithExpression :: TypedTerm DimExpr -> TypedTerm (Maybe Expression) -> TypedTerm DimExpr
+ Hydra.Java.Dsl.Syntax: dims :: TypedTerm [[Annotation]] -> TypedTerm Dims
+ Hydra.Java.Dsl.Syntax: dimsDims :: TypedName Dims
+ Hydra.Java.Dsl.Syntax: doStatement :: TypedTerm Statement -> TypedTerm Expression -> TypedTerm DoStatement
+ Hydra.Java.Dsl.Syntax: doStatementBody :: TypedTerm DoStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: doStatementCond :: TypedTerm DoStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: doStatementDoStatement :: TypedName DoStatement
+ Hydra.Java.Dsl.Syntax: doStatementWithBody :: TypedTerm DoStatement -> TypedTerm Statement -> TypedTerm DoStatement
+ Hydra.Java.Dsl.Syntax: doStatementWithCond :: TypedTerm DoStatement -> TypedTerm Expression -> TypedTerm DoStatement
+ Hydra.Java.Dsl.Syntax: elementValueAnnotation :: TypedTerm Annotation -> TypedTerm ElementValue
+ Hydra.Java.Dsl.Syntax: elementValueArrayInitializer :: TypedTerm [ElementValue] -> TypedTerm ElementValueArrayInitializer
+ Hydra.Java.Dsl.Syntax: elementValueArrayInitializerElementValueArrayInitializer :: TypedName ElementValueArrayInitializer
+ Hydra.Java.Dsl.Syntax: elementValueConditionalExpression :: TypedTerm ConditionalExpression -> TypedTerm ElementValue
+ Hydra.Java.Dsl.Syntax: elementValueElementValue :: TypedName ElementValue
+ Hydra.Java.Dsl.Syntax: elementValueElementValueArrayInitializer :: TypedTerm ElementValueArrayInitializer -> TypedTerm ElementValue
+ Hydra.Java.Dsl.Syntax: elementValuePair :: TypedTerm Identifier -> TypedTerm ElementValue -> TypedTerm ElementValuePair
+ Hydra.Java.Dsl.Syntax: elementValuePairElementValuePair :: TypedName ElementValuePair
+ Hydra.Java.Dsl.Syntax: elementValuePairKey :: TypedTerm ElementValuePair -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: elementValuePairValue :: TypedTerm ElementValuePair -> TypedTerm ElementValue
+ Hydra.Java.Dsl.Syntax: elementValuePairWithKey :: TypedTerm ElementValuePair -> TypedTerm Identifier -> TypedTerm ElementValuePair
+ Hydra.Java.Dsl.Syntax: elementValuePairWithValue :: TypedTerm ElementValuePair -> TypedTerm ElementValue -> TypedTerm ElementValuePair
+ Hydra.Java.Dsl.Syntax: enhancedForCond :: TypedTerm LocalVariableDeclaration -> TypedTerm Expression -> TypedTerm EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForCondDeclaration :: TypedTerm EnhancedForCond -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: enhancedForCondEnhancedForCond :: TypedName EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForCondExpression :: TypedTerm EnhancedForCond -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: enhancedForCondWithDeclaration :: TypedTerm EnhancedForCond -> TypedTerm LocalVariableDeclaration -> TypedTerm EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForCondWithExpression :: TypedTerm EnhancedForCond -> TypedTerm Expression -> TypedTerm EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForStatement :: TypedTerm EnhancedForCond -> TypedTerm Statement -> TypedTerm EnhancedForStatement
+ Hydra.Java.Dsl.Syntax: enhancedForStatementBody :: TypedTerm EnhancedForStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: enhancedForStatementCond :: TypedTerm EnhancedForStatement -> TypedTerm EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForStatementEnhancedForStatement :: TypedName EnhancedForStatement
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIf :: TypedTerm EnhancedForCond -> TypedTerm StatementNoShortIf -> TypedTerm EnhancedForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIfBody :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIfCond :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm EnhancedForCond
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIfEnhancedForStatementNoShortIf :: TypedName EnhancedForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIfWithBody :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm EnhancedForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: enhancedForStatementNoShortIfWithCond :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm EnhancedForCond -> TypedTerm EnhancedForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: enhancedForStatementWithBody :: TypedTerm EnhancedForStatement -> TypedTerm Statement -> TypedTerm EnhancedForStatement
+ Hydra.Java.Dsl.Syntax: enhancedForStatementWithCond :: TypedTerm EnhancedForStatement -> TypedTerm EnhancedForCond -> TypedTerm EnhancedForStatement
+ Hydra.Java.Dsl.Syntax: enumBody :: TypedTerm [EnumBody_Element] -> TypedTerm EnumBody
+ Hydra.Java.Dsl.Syntax: enumBodyEnumBody :: TypedName EnumBody
+ Hydra.Java.Dsl.Syntax: enumBody_Element :: TypedTerm [EnumConstant] -> TypedTerm [ClassBodyDeclaration] -> TypedTerm EnumBody_Element
+ Hydra.Java.Dsl.Syntax: enumBody_ElementBodyDeclarations :: TypedTerm EnumBody_Element -> TypedTerm [ClassBodyDeclaration]
+ Hydra.Java.Dsl.Syntax: enumBody_ElementConstants :: TypedTerm EnumBody_Element -> TypedTerm [EnumConstant]
+ Hydra.Java.Dsl.Syntax: enumBody_ElementEnumBody_Element :: TypedName EnumBody_Element
+ Hydra.Java.Dsl.Syntax: enumBody_ElementWithBodyDeclarations :: TypedTerm EnumBody_Element -> TypedTerm [ClassBodyDeclaration] -> TypedTerm EnumBody_Element
+ Hydra.Java.Dsl.Syntax: enumBody_ElementWithConstants :: TypedTerm EnumBody_Element -> TypedTerm [EnumConstant] -> TypedTerm EnumBody_Element
+ Hydra.Java.Dsl.Syntax: enumConstant :: TypedTerm [EnumConstantModifier] -> TypedTerm Identifier -> TypedTerm (Maybe [Expression]) -> TypedTerm (Maybe ClassBody) -> TypedTerm EnumConstant
+ Hydra.Java.Dsl.Syntax: enumConstantArguments :: TypedTerm EnumConstant -> TypedTerm (Maybe [Expression])
+ Hydra.Java.Dsl.Syntax: enumConstantBody :: TypedTerm EnumConstant -> TypedTerm (Maybe ClassBody)
+ Hydra.Java.Dsl.Syntax: enumConstantEnumConstant :: TypedName EnumConstant
+ Hydra.Java.Dsl.Syntax: enumConstantIdentifier :: TypedTerm EnumConstant -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: enumConstantModifier :: TypedTerm Annotation -> TypedTerm EnumConstantModifier
+ Hydra.Java.Dsl.Syntax: enumConstantModifierEnumConstantModifier :: TypedName EnumConstantModifier
+ Hydra.Java.Dsl.Syntax: enumConstantModifiers :: TypedTerm EnumConstant -> TypedTerm [EnumConstantModifier]
+ Hydra.Java.Dsl.Syntax: enumConstantWithArguments :: TypedTerm EnumConstant -> TypedTerm (Maybe [Expression]) -> TypedTerm EnumConstant
+ Hydra.Java.Dsl.Syntax: enumConstantWithBody :: TypedTerm EnumConstant -> TypedTerm (Maybe ClassBody) -> TypedTerm EnumConstant
+ Hydra.Java.Dsl.Syntax: enumConstantWithIdentifier :: TypedTerm EnumConstant -> TypedTerm Identifier -> TypedTerm EnumConstant
+ Hydra.Java.Dsl.Syntax: enumConstantWithModifiers :: TypedTerm EnumConstant -> TypedTerm [EnumConstantModifier] -> TypedTerm EnumConstant
+ Hydra.Java.Dsl.Syntax: enumDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [InterfaceType] -> TypedTerm EnumBody -> TypedTerm EnumDeclaration
+ Hydra.Java.Dsl.Syntax: enumDeclarationBody :: TypedTerm EnumDeclaration -> TypedTerm EnumBody
+ Hydra.Java.Dsl.Syntax: enumDeclarationEnumDeclaration :: TypedName EnumDeclaration
+ Hydra.Java.Dsl.Syntax: enumDeclarationIdentifier :: TypedTerm EnumDeclaration -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: enumDeclarationImplements :: TypedTerm EnumDeclaration -> TypedTerm [InterfaceType]
+ Hydra.Java.Dsl.Syntax: enumDeclarationModifiers :: TypedTerm EnumDeclaration -> TypedTerm [ClassModifier]
+ Hydra.Java.Dsl.Syntax: enumDeclarationWithBody :: TypedTerm EnumDeclaration -> TypedTerm EnumBody -> TypedTerm EnumDeclaration
+ Hydra.Java.Dsl.Syntax: enumDeclarationWithIdentifier :: TypedTerm EnumDeclaration -> TypedTerm TypeIdentifier -> TypedTerm EnumDeclaration
+ Hydra.Java.Dsl.Syntax: enumDeclarationWithImplements :: TypedTerm EnumDeclaration -> TypedTerm [InterfaceType] -> TypedTerm EnumDeclaration
+ Hydra.Java.Dsl.Syntax: enumDeclarationWithModifiers :: TypedTerm EnumDeclaration -> TypedTerm [ClassModifier] -> TypedTerm EnumDeclaration
+ Hydra.Java.Dsl.Syntax: equalityExpressionEqual :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
+ Hydra.Java.Dsl.Syntax: equalityExpressionEqualityExpression :: TypedName EqualityExpression
+ Hydra.Java.Dsl.Syntax: equalityExpressionNotEqual :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
+ Hydra.Java.Dsl.Syntax: equalityExpressionUnary :: TypedTerm RelationalExpression -> TypedTerm EqualityExpression
+ Hydra.Java.Dsl.Syntax: equalityExpression_Binary :: TypedTerm EqualityExpression -> TypedTerm RelationalExpression -> TypedTerm EqualityExpression_Binary
+ Hydra.Java.Dsl.Syntax: equalityExpression_BinaryEqualityExpression_Binary :: TypedName EqualityExpression_Binary
+ Hydra.Java.Dsl.Syntax: equalityExpression_BinaryLhs :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression
+ Hydra.Java.Dsl.Syntax: equalityExpression_BinaryRhs :: TypedTerm EqualityExpression_Binary -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: equalityExpression_BinaryWithLhs :: TypedTerm EqualityExpression_Binary -> TypedTerm EqualityExpression -> TypedTerm EqualityExpression_Binary
+ Hydra.Java.Dsl.Syntax: equalityExpression_BinaryWithRhs :: TypedTerm EqualityExpression_Binary -> TypedTerm RelationalExpression -> TypedTerm EqualityExpression_Binary
+ Hydra.Java.Dsl.Syntax: exceptionTypeClass :: TypedTerm ClassType -> TypedTerm ExceptionType
+ Hydra.Java.Dsl.Syntax: exceptionTypeExceptionType :: TypedName ExceptionType
+ Hydra.Java.Dsl.Syntax: exceptionTypeVariable :: TypedTerm TypeVariable -> TypedTerm ExceptionType
+ Hydra.Java.Dsl.Syntax: exclusiveOrExpression :: TypedTerm [AndExpression] -> TypedTerm ExclusiveOrExpression
+ Hydra.Java.Dsl.Syntax: exclusiveOrExpressionExclusiveOrExpression :: TypedName ExclusiveOrExpression
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocation :: TypedTerm [TypeArgument] -> TypedTerm [Expression] -> TypedTerm ExplicitConstructorInvocation_Variant -> TypedTerm ExplicitConstructorInvocation
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [Expression]
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationExplicitConstructorInvocation :: TypedName ExplicitConstructorInvocation
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationTypeArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationVariant :: TypedTerm ExplicitConstructorInvocation -> TypedTerm ExplicitConstructorInvocation_Variant
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationWithArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [Expression] -> TypedTerm ExplicitConstructorInvocation
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationWithTypeArguments :: TypedTerm ExplicitConstructorInvocation -> TypedTerm [TypeArgument] -> TypedTerm ExplicitConstructorInvocation
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocationWithVariant :: TypedTerm ExplicitConstructorInvocation -> TypedTerm ExplicitConstructorInvocation_Variant -> TypedTerm ExplicitConstructorInvocation
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant :: TypedName ExplicitConstructorInvocation_Variant
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocation_VariantPrimary :: TypedTerm Primary -> TypedTerm ExplicitConstructorInvocation_Variant
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocation_VariantSuper :: TypedTerm (Maybe ExpressionName) -> TypedTerm ExplicitConstructorInvocation_Variant
+ Hydra.Java.Dsl.Syntax: explicitConstructorInvocation_VariantThis :: TypedTerm ExplicitConstructorInvocation_Variant
+ Hydra.Java.Dsl.Syntax: expressionAssignment :: TypedTerm AssignmentExpression -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: expressionExpression :: TypedName Expression
+ Hydra.Java.Dsl.Syntax: expressionLambda :: TypedTerm LambdaExpression -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: expressionName :: TypedTerm (Maybe AmbiguousName) -> TypedTerm Identifier -> TypedTerm ExpressionName
+ Hydra.Java.Dsl.Syntax: expressionNameExpressionName :: TypedName ExpressionName
+ Hydra.Java.Dsl.Syntax: expressionNameIdentifier :: TypedTerm ExpressionName -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: expressionNameQualifier :: TypedTerm ExpressionName -> TypedTerm (Maybe AmbiguousName)
+ Hydra.Java.Dsl.Syntax: expressionNameWithIdentifier :: TypedTerm ExpressionName -> TypedTerm Identifier -> TypedTerm ExpressionName
+ Hydra.Java.Dsl.Syntax: expressionNameWithQualifier :: TypedTerm ExpressionName -> TypedTerm (Maybe AmbiguousName) -> TypedTerm ExpressionName
+ Hydra.Java.Dsl.Syntax: expressionStatement :: TypedTerm StatementExpression -> TypedTerm ExpressionStatement
+ Hydra.Java.Dsl.Syntax: expressionStatementExpressionStatement :: TypedName ExpressionStatement
+ Hydra.Java.Dsl.Syntax: fieldAccess :: TypedTerm FieldAccess_Qualifier -> TypedTerm Identifier -> TypedTerm FieldAccess
+ Hydra.Java.Dsl.Syntax: fieldAccessFieldAccess :: TypedName FieldAccess
+ Hydra.Java.Dsl.Syntax: fieldAccessIdentifier :: TypedTerm FieldAccess -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: fieldAccessQualifier :: TypedTerm FieldAccess -> TypedTerm FieldAccess_Qualifier
+ Hydra.Java.Dsl.Syntax: fieldAccessWithIdentifier :: TypedTerm FieldAccess -> TypedTerm Identifier -> TypedTerm FieldAccess
+ Hydra.Java.Dsl.Syntax: fieldAccessWithQualifier :: TypedTerm FieldAccess -> TypedTerm FieldAccess_Qualifier -> TypedTerm FieldAccess
+ Hydra.Java.Dsl.Syntax: fieldAccess_QualifierFieldAccess_Qualifier :: TypedName FieldAccess_Qualifier
+ Hydra.Java.Dsl.Syntax: fieldAccess_QualifierPrimary :: TypedTerm Primary -> TypedTerm FieldAccess_Qualifier
+ Hydra.Java.Dsl.Syntax: fieldAccess_QualifierSuper :: TypedTerm FieldAccess_Qualifier
+ Hydra.Java.Dsl.Syntax: fieldAccess_QualifierTyped :: TypedTerm TypeName -> TypedTerm FieldAccess_Qualifier
+ Hydra.Java.Dsl.Syntax: fieldDeclaration :: TypedTerm [FieldModifier] -> TypedTerm UnannType -> TypedTerm [VariableDeclarator] -> TypedTerm FieldDeclaration
+ Hydra.Java.Dsl.Syntax: fieldDeclarationFieldDeclaration :: TypedName FieldDeclaration
+ Hydra.Java.Dsl.Syntax: fieldDeclarationModifiers :: TypedTerm FieldDeclaration -> TypedTerm [FieldModifier]
+ Hydra.Java.Dsl.Syntax: fieldDeclarationUnannType :: TypedTerm FieldDeclaration -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: fieldDeclarationVariableDeclarators :: TypedTerm FieldDeclaration -> TypedTerm [VariableDeclarator]
+ Hydra.Java.Dsl.Syntax: fieldDeclarationWithModifiers :: TypedTerm FieldDeclaration -> TypedTerm [FieldModifier] -> TypedTerm FieldDeclaration
+ Hydra.Java.Dsl.Syntax: fieldDeclarationWithUnannType :: TypedTerm FieldDeclaration -> TypedTerm UnannType -> TypedTerm FieldDeclaration
+ Hydra.Java.Dsl.Syntax: fieldDeclarationWithVariableDeclarators :: TypedTerm FieldDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm FieldDeclaration
+ Hydra.Java.Dsl.Syntax: fieldModifierAnnotation :: TypedTerm Annotation -> TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierFieldModifier :: TypedName FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierFinal :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierPrivate :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierProtected :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierPublic :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierStatic :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierTransient :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: fieldModifierVolatile :: TypedTerm FieldModifier
+ Hydra.Java.Dsl.Syntax: finally :: TypedTerm Block -> TypedTerm Finally
+ Hydra.Java.Dsl.Syntax: finallyFinally :: TypedName Finally
+ Hydra.Java.Dsl.Syntax: floatingPointLiteral :: TypedTerm Double -> TypedTerm FloatingPointLiteral
+ Hydra.Java.Dsl.Syntax: floatingPointLiteralFloatingPointLiteral :: TypedName FloatingPointLiteral
+ Hydra.Java.Dsl.Syntax: floatingPointTypeDouble :: TypedTerm FloatingPointType
+ Hydra.Java.Dsl.Syntax: floatingPointTypeFloat :: TypedTerm FloatingPointType
+ Hydra.Java.Dsl.Syntax: floatingPointTypeFloatingPointType :: TypedName FloatingPointType
+ Hydra.Java.Dsl.Syntax: forCond :: TypedTerm (Maybe ForInit) -> TypedTerm (Maybe Expression) -> TypedTerm (Maybe ForUpdate) -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: forCondCond :: TypedTerm ForCond -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: forCondForCond :: TypedName ForCond
+ Hydra.Java.Dsl.Syntax: forCondInit :: TypedTerm ForCond -> TypedTerm (Maybe ForInit)
+ Hydra.Java.Dsl.Syntax: forCondUpdate :: TypedTerm ForCond -> TypedTerm (Maybe ForUpdate)
+ Hydra.Java.Dsl.Syntax: forCondWithCond :: TypedTerm ForCond -> TypedTerm (Maybe Expression) -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: forCondWithInit :: TypedTerm ForCond -> TypedTerm (Maybe ForInit) -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: forCondWithUpdate :: TypedTerm ForCond -> TypedTerm (Maybe ForUpdate) -> TypedTerm ForCond
+ Hydra.Java.Dsl.Syntax: forInitForInit :: TypedName ForInit
+ Hydra.Java.Dsl.Syntax: forInitLocalVariable :: TypedTerm LocalVariableDeclaration -> TypedTerm ForInit
+ Hydra.Java.Dsl.Syntax: forInitStatements :: TypedTerm [StatementExpression] -> TypedTerm ForInit
+ Hydra.Java.Dsl.Syntax: forStatementBasic :: TypedTerm BasicForStatement -> TypedTerm ForStatement
+ Hydra.Java.Dsl.Syntax: forStatementEnhanced :: TypedTerm EnhancedForStatement -> TypedTerm ForStatement
+ Hydra.Java.Dsl.Syntax: forStatementForStatement :: TypedName ForStatement
+ Hydra.Java.Dsl.Syntax: forStatementNoShortIfBasic :: TypedTerm BasicForStatementNoShortIf -> TypedTerm ForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: forStatementNoShortIfEnhanced :: TypedTerm EnhancedForStatementNoShortIf -> TypedTerm ForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: forStatementNoShortIfForStatementNoShortIf :: TypedName ForStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: forUpdate :: TypedTerm [StatementExpression] -> TypedTerm ForUpdate
+ Hydra.Java.Dsl.Syntax: forUpdateForUpdate :: TypedName ForUpdate
+ Hydra.Java.Dsl.Syntax: formalParameterFormalParameter :: TypedName FormalParameter
+ Hydra.Java.Dsl.Syntax: formalParameterSimple :: TypedTerm FormalParameter_Simple -> TypedTerm FormalParameter
+ Hydra.Java.Dsl.Syntax: formalParameterVariableArity :: TypedTerm VariableArityParameter -> TypedTerm FormalParameter
+ Hydra.Java.Dsl.Syntax: formalParameter_Simple :: TypedTerm [VariableModifier] -> TypedTerm UnannType -> TypedTerm VariableDeclaratorId -> TypedTerm FormalParameter_Simple
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleFormalParameter_Simple :: TypedName FormalParameter_Simple
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleId :: TypedTerm FormalParameter_Simple -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleModifiers :: TypedTerm FormalParameter_Simple -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleType :: TypedTerm FormalParameter_Simple -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleWithId :: TypedTerm FormalParameter_Simple -> TypedTerm VariableDeclaratorId -> TypedTerm FormalParameter_Simple
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleWithModifiers :: TypedTerm FormalParameter_Simple -> TypedTerm [VariableModifier] -> TypedTerm FormalParameter_Simple
+ Hydra.Java.Dsl.Syntax: formalParameter_SimpleWithType :: TypedTerm FormalParameter_Simple -> TypedTerm UnannType -> TypedTerm FormalParameter_Simple
+ Hydra.Java.Dsl.Syntax: guard :: TypedTerm Expression -> TypedTerm Guard
+ Hydra.Java.Dsl.Syntax: guardGuard :: TypedName Guard
+ Hydra.Java.Dsl.Syntax: identifier :: TypedTerm String -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: identifierIdentifier :: TypedName Identifier
+ Hydra.Java.Dsl.Syntax: ifThenElseStatement :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm Statement -> TypedTerm IfThenElseStatement
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementCond :: TypedTerm IfThenElseStatement -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementIfThenElseStatement :: TypedName IfThenElseStatement
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIf :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfCond :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf :: TypedName IfThenElseStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfThen :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfWithCond :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm (Maybe Expression) -> TypedTerm IfThenElseStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfWithElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementNoShortIfWithThen :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementThen :: TypedTerm IfThenElseStatement -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementWithCond :: TypedTerm IfThenElseStatement -> TypedTerm (Maybe Expression) -> TypedTerm IfThenElseStatement
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementWithElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement -> TypedTerm IfThenElseStatement
+ Hydra.Java.Dsl.Syntax: ifThenElseStatementWithThen :: TypedTerm IfThenElseStatement -> TypedTerm StatementNoShortIf -> TypedTerm IfThenElseStatement
+ Hydra.Java.Dsl.Syntax: ifThenStatement :: TypedTerm Expression -> TypedTerm Statement -> TypedTerm IfThenStatement
+ Hydra.Java.Dsl.Syntax: ifThenStatementExpression :: TypedTerm IfThenStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: ifThenStatementIfThenStatement :: TypedName IfThenStatement
+ Hydra.Java.Dsl.Syntax: ifThenStatementStatement :: TypedTerm IfThenStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: ifThenStatementWithExpression :: TypedTerm IfThenStatement -> TypedTerm Expression -> TypedTerm IfThenStatement
+ Hydra.Java.Dsl.Syntax: ifThenStatementWithStatement :: TypedTerm IfThenStatement -> TypedTerm Statement -> TypedTerm IfThenStatement
+ Hydra.Java.Dsl.Syntax: importDeclarationImportDeclaration :: TypedName ImportDeclaration
+ Hydra.Java.Dsl.Syntax: importDeclarationSingleStaticImport :: TypedTerm SingleStaticImportDeclaration -> TypedTerm ImportDeclaration
+ Hydra.Java.Dsl.Syntax: importDeclarationSingleType :: TypedTerm SingleTypeImportDeclaration -> TypedTerm ImportDeclaration
+ Hydra.Java.Dsl.Syntax: importDeclarationStaticImportOnDemand :: TypedTerm StaticImportOnDemandDeclaration -> TypedTerm ImportDeclaration
+ Hydra.Java.Dsl.Syntax: importDeclarationTypeImportOnDemand :: TypedTerm TypeImportOnDemandDeclaration -> TypedTerm ImportDeclaration
+ Hydra.Java.Dsl.Syntax: inclusiveOrExpression :: TypedTerm [ExclusiveOrExpression] -> TypedTerm InclusiveOrExpression
+ Hydra.Java.Dsl.Syntax: inclusiveOrExpressionInclusiveOrExpression :: TypedName InclusiveOrExpression
+ Hydra.Java.Dsl.Syntax: instanceInitializer :: TypedTerm Block -> TypedTerm InstanceInitializer
+ Hydra.Java.Dsl.Syntax: instanceInitializerInstanceInitializer :: TypedName InstanceInitializer
+ Hydra.Java.Dsl.Syntax: instanceofExpression :: TypedTerm RelationalExpression -> TypedTerm InstanceofExpression_Rhs -> TypedTerm InstanceofExpression
+ Hydra.Java.Dsl.Syntax: instanceofExpressionInstanceofExpression :: TypedName InstanceofExpression
+ Hydra.Java.Dsl.Syntax: instanceofExpressionLhs :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: instanceofExpressionRhs :: TypedTerm InstanceofExpression -> TypedTerm InstanceofExpression_Rhs
+ Hydra.Java.Dsl.Syntax: instanceofExpressionWithLhs :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression -> TypedTerm InstanceofExpression
+ Hydra.Java.Dsl.Syntax: instanceofExpressionWithRhs :: TypedTerm InstanceofExpression -> TypedTerm InstanceofExpression_Rhs -> TypedTerm InstanceofExpression
+ Hydra.Java.Dsl.Syntax: instanceofExpression_RhsInstanceofExpression_Rhs :: TypedName InstanceofExpression_Rhs
+ Hydra.Java.Dsl.Syntax: instanceofExpression_RhsPattern :: TypedTerm Pattern -> TypedTerm InstanceofExpression_Rhs
+ Hydra.Java.Dsl.Syntax: instanceofExpression_RhsReferenceType :: TypedTerm ReferenceType -> TypedTerm InstanceofExpression_Rhs
+ Hydra.Java.Dsl.Syntax: integerLiteral :: TypedTerm Integer -> TypedTerm IntegerLiteral
+ Hydra.Java.Dsl.Syntax: integerLiteralIntegerLiteral :: TypedName IntegerLiteral
+ Hydra.Java.Dsl.Syntax: integralTypeByte :: TypedTerm IntegralType
+ Hydra.Java.Dsl.Syntax: integralTypeChar :: TypedTerm IntegralType
+ Hydra.Java.Dsl.Syntax: integralTypeInt :: TypedTerm IntegralType
+ Hydra.Java.Dsl.Syntax: integralTypeIntegralType :: TypedName IntegralType
+ Hydra.Java.Dsl.Syntax: integralTypeLong :: TypedTerm IntegralType
+ Hydra.Java.Dsl.Syntax: integralTypeShort :: TypedTerm IntegralType
+ Hydra.Java.Dsl.Syntax: interfaceBody :: TypedTerm [InterfaceMemberDeclarationWithComments] -> TypedTerm InterfaceBody
+ Hydra.Java.Dsl.Syntax: interfaceBodyInterfaceBody :: TypedName InterfaceBody
+ Hydra.Java.Dsl.Syntax: interfaceDeclarationAnnotationInterface :: TypedTerm AnnotationInterfaceDeclaration -> TypedTerm InterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceDeclarationInterfaceDeclaration :: TypedName InterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceDeclarationNormalInterface :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationConstant :: TypedTerm ConstantDeclaration -> TypedTerm InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationInterfaceMemberDeclaration :: TypedName InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationInterfaceMethod :: TypedTerm InterfaceMethodDeclaration -> TypedTerm InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithComments :: TypedTerm InterfaceMemberDeclaration -> TypedTerm (Maybe String) -> TypedTerm InterfaceMemberDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithCommentsComments :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm (Maybe String)
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments :: TypedName InterfaceMemberDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithCommentsValue :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm InterfaceMemberDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithCommentsWithComments :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm InterfaceMemberDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: interfaceMemberDeclarationWithCommentsWithValue :: TypedTerm InterfaceMemberDeclarationWithComments -> TypedTerm InterfaceMemberDeclaration -> TypedTerm InterfaceMemberDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclaration :: TypedTerm [InterfaceMethodModifier] -> TypedTerm MethodHeader -> TypedTerm MethodBody -> TypedTerm InterfaceMethodDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationBody :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodBody
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationHeader :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationInterfaceMethodDeclaration :: TypedName InterfaceMethodDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationModifiers :: TypedTerm InterfaceMethodDeclaration -> TypedTerm [InterfaceMethodModifier]
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationWithBody :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodBody -> TypedTerm InterfaceMethodDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationWithHeader :: TypedTerm InterfaceMethodDeclaration -> TypedTerm MethodHeader -> TypedTerm InterfaceMethodDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMethodDeclarationWithModifiers :: TypedTerm InterfaceMethodDeclaration -> TypedTerm [InterfaceMethodModifier] -> TypedTerm InterfaceMethodDeclaration
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierAbstract :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierAnnotation :: TypedTerm Annotation -> TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierDefault :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierInterfaceMethodModifier :: TypedName InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierPrivate :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierPublic :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierStatic :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceMethodModifierStrictfp :: TypedTerm InterfaceMethodModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierAbstract :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierAnnotation :: TypedTerm Annotation -> TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierInterfaceModifier :: TypedName InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierNonSealed :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierPrivate :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierProtected :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierPublic :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierSealed :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierStatic :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceModifierStrictfp :: TypedTerm InterfaceModifier
+ Hydra.Java.Dsl.Syntax: interfaceType :: TypedTerm ClassType -> TypedTerm InterfaceType
+ Hydra.Java.Dsl.Syntax: interfaceTypeInterfaceType :: TypedName InterfaceType
+ Hydra.Java.Dsl.Syntax: labeledStatement :: TypedTerm Identifier -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Java.Dsl.Syntax: labeledStatementIdentifier :: TypedTerm LabeledStatement -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: labeledStatementLabeledStatement :: TypedName LabeledStatement
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIf :: TypedTerm Identifier -> TypedTerm StatementNoShortIf -> TypedTerm LabeledStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIfIdentifier :: TypedTerm LabeledStatementNoShortIf -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIfLabeledStatementNoShortIf :: TypedName LabeledStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIfStatement :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIfWithIdentifier :: TypedTerm LabeledStatementNoShortIf -> TypedTerm Identifier -> TypedTerm LabeledStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: labeledStatementNoShortIfWithStatement :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm LabeledStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: labeledStatementStatement :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: labeledStatementWithIdentifier :: TypedTerm LabeledStatement -> TypedTerm Identifier -> TypedTerm LabeledStatement
+ Hydra.Java.Dsl.Syntax: labeledStatementWithStatement :: TypedTerm LabeledStatement -> TypedTerm Statement -> TypedTerm LabeledStatement
+ Hydra.Java.Dsl.Syntax: lambdaBodyBlock :: TypedTerm Block -> TypedTerm LambdaBody
+ Hydra.Java.Dsl.Syntax: lambdaBodyExpression :: TypedTerm Expression -> TypedTerm LambdaBody
+ Hydra.Java.Dsl.Syntax: lambdaBodyLambdaBody :: TypedName LambdaBody
+ Hydra.Java.Dsl.Syntax: lambdaExpression :: TypedTerm LambdaParameters -> TypedTerm LambdaBody -> TypedTerm LambdaExpression
+ Hydra.Java.Dsl.Syntax: lambdaExpressionBody :: TypedTerm LambdaExpression -> TypedTerm LambdaBody
+ Hydra.Java.Dsl.Syntax: lambdaExpressionLambdaExpression :: TypedName LambdaExpression
+ Hydra.Java.Dsl.Syntax: lambdaExpressionParameters :: TypedTerm LambdaExpression -> TypedTerm LambdaParameters
+ Hydra.Java.Dsl.Syntax: lambdaExpressionWithBody :: TypedTerm LambdaExpression -> TypedTerm LambdaBody -> TypedTerm LambdaExpression
+ Hydra.Java.Dsl.Syntax: lambdaExpressionWithParameters :: TypedTerm LambdaExpression -> TypedTerm LambdaParameters -> TypedTerm LambdaExpression
+ Hydra.Java.Dsl.Syntax: lambdaParameterLambdaParameter :: TypedName LambdaParameter
+ Hydra.Java.Dsl.Syntax: lambdaParameterNormal :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameter
+ Hydra.Java.Dsl.Syntax: lambdaParameterTypeLambdaParameterType :: TypedName LambdaParameterType
+ Hydra.Java.Dsl.Syntax: lambdaParameterTypeType :: TypedTerm UnannType -> TypedTerm LambdaParameterType
+ Hydra.Java.Dsl.Syntax: lambdaParameterTypeVar :: TypedTerm LambdaParameterType
+ Hydra.Java.Dsl.Syntax: lambdaParameterVariableArity :: TypedTerm VariableArityParameter -> TypedTerm LambdaParameter
+ Hydra.Java.Dsl.Syntax: lambdaParameter_Normal :: TypedTerm [VariableModifier] -> TypedTerm LambdaParameterType -> TypedTerm VariableDeclaratorId -> TypedTerm LambdaParameter_Normal
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalId :: TypedTerm LambdaParameter_Normal -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalLambdaParameter_Normal :: TypedName LambdaParameter_Normal
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalModifiers :: TypedTerm LambdaParameter_Normal -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalType :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameterType
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalWithId :: TypedTerm LambdaParameter_Normal -> TypedTerm VariableDeclaratorId -> TypedTerm LambdaParameter_Normal
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalWithModifiers :: TypedTerm LambdaParameter_Normal -> TypedTerm [VariableModifier] -> TypedTerm LambdaParameter_Normal
+ Hydra.Java.Dsl.Syntax: lambdaParameter_NormalWithType :: TypedTerm LambdaParameter_Normal -> TypedTerm LambdaParameterType -> TypedTerm LambdaParameter_Normal
+ Hydra.Java.Dsl.Syntax: lambdaParametersLambdaParameters :: TypedName LambdaParameters
+ Hydra.Java.Dsl.Syntax: lambdaParametersSingle :: TypedTerm Identifier -> TypedTerm LambdaParameters
+ Hydra.Java.Dsl.Syntax: lambdaParametersTuple :: TypedTerm [LambdaParameters] -> TypedTerm LambdaParameters
+ Hydra.Java.Dsl.Syntax: leftHandSideArrayAccess :: TypedTerm ArrayAccess -> TypedTerm LeftHandSide
+ Hydra.Java.Dsl.Syntax: leftHandSideExpressionName :: TypedTerm ExpressionName -> TypedTerm LeftHandSide
+ Hydra.Java.Dsl.Syntax: leftHandSideFieldAccess :: TypedTerm FieldAccess -> TypedTerm LeftHandSide
+ Hydra.Java.Dsl.Syntax: leftHandSideLeftHandSide :: TypedName LeftHandSide
+ Hydra.Java.Dsl.Syntax: literalBoolean :: TypedTerm Bool -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalCharacter :: TypedTerm Int -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalFloatingPoint :: TypedTerm FloatingPointLiteral -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalInteger :: TypedTerm IntegerLiteral -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalLiteral :: TypedName Literal
+ Hydra.Java.Dsl.Syntax: literalNull :: TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalString :: TypedTerm StringLiteral -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: literalTextBlock :: TypedTerm TextBlock -> TypedTerm Literal
+ Hydra.Java.Dsl.Syntax: localClassOrInterfaceDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm LocalClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration :: TypedName LocalClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: localClassOrInterfaceDeclarationNormalInterface :: TypedTerm NormalInterfaceDeclaration -> TypedTerm LocalClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableDeclaration :: TypedTerm [VariableModifier] -> TypedTerm LocalVariableType -> TypedTerm [VariableDeclarator] -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationDeclarators :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableDeclarator]
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationLocalVariableDeclaration :: TypedName LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationModifiers :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationStatement :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableDeclarationStatement
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationStatementLocalVariableDeclarationStatement :: TypedName LocalVariableDeclarationStatement
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationType :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableType
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationWithDeclarators :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableDeclarator] -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationWithModifiers :: TypedTerm LocalVariableDeclaration -> TypedTerm [VariableModifier] -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableDeclarationWithType :: TypedTerm LocalVariableDeclaration -> TypedTerm LocalVariableType -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: localVariableTypeLocalVariableType :: TypedName LocalVariableType
+ Hydra.Java.Dsl.Syntax: localVariableTypeType :: TypedTerm UnannType -> TypedTerm LocalVariableType
+ Hydra.Java.Dsl.Syntax: localVariableTypeVar :: TypedTerm LocalVariableType
+ Hydra.Java.Dsl.Syntax: markerAnnotation :: TypedTerm TypeName -> TypedTerm MarkerAnnotation
+ Hydra.Java.Dsl.Syntax: markerAnnotationMarkerAnnotation :: TypedName MarkerAnnotation
+ Hydra.Java.Dsl.Syntax: methodBodyBlock :: TypedTerm Block -> TypedTerm MethodBody
+ Hydra.Java.Dsl.Syntax: methodBodyMethodBody :: TypedName MethodBody
+ Hydra.Java.Dsl.Syntax: methodBodyNone :: TypedTerm MethodBody
+ Hydra.Java.Dsl.Syntax: methodDeclaration :: TypedTerm [Annotation] -> TypedTerm [MethodModifier] -> TypedTerm MethodHeader -> TypedTerm MethodBody -> TypedTerm MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarationAnnotations :: TypedTerm MethodDeclaration -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: methodDeclarationBody :: TypedTerm MethodDeclaration -> TypedTerm MethodBody
+ Hydra.Java.Dsl.Syntax: methodDeclarationHeader :: TypedTerm MethodDeclaration -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodDeclarationMethodDeclaration :: TypedName MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarationModifiers :: TypedTerm MethodDeclaration -> TypedTerm [MethodModifier]
+ Hydra.Java.Dsl.Syntax: methodDeclarationWithAnnotations :: TypedTerm MethodDeclaration -> TypedTerm [Annotation] -> TypedTerm MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarationWithBody :: TypedTerm MethodDeclaration -> TypedTerm MethodBody -> TypedTerm MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarationWithHeader :: TypedTerm MethodDeclaration -> TypedTerm MethodHeader -> TypedTerm MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarationWithModifiers :: TypedTerm MethodDeclaration -> TypedTerm [MethodModifier] -> TypedTerm MethodDeclaration
+ Hydra.Java.Dsl.Syntax: methodDeclarator :: TypedTerm Identifier -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm [FormalParameter] -> TypedTerm MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodDeclaratorFormalParameters :: TypedTerm MethodDeclarator -> TypedTerm [FormalParameter]
+ Hydra.Java.Dsl.Syntax: methodDeclaratorIdentifier :: TypedTerm MethodDeclarator -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodDeclaratorMethodDeclarator :: TypedName MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodDeclaratorReceiverParameter :: TypedTerm MethodDeclarator -> TypedTerm (Maybe ReceiverParameter)
+ Hydra.Java.Dsl.Syntax: methodDeclaratorWithFormalParameters :: TypedTerm MethodDeclarator -> TypedTerm [FormalParameter] -> TypedTerm MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodDeclaratorWithIdentifier :: TypedTerm MethodDeclarator -> TypedTerm Identifier -> TypedTerm MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodDeclaratorWithReceiverParameter :: TypedTerm MethodDeclarator -> TypedTerm (Maybe ReceiverParameter) -> TypedTerm MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodHeader :: TypedTerm [TypeParameter] -> TypedTerm Result -> TypedTerm MethodDeclarator -> TypedTerm (Maybe Throws) -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodHeaderDeclarator :: TypedTerm MethodHeader -> TypedTerm MethodDeclarator
+ Hydra.Java.Dsl.Syntax: methodHeaderMethodHeader :: TypedName MethodHeader
+ Hydra.Java.Dsl.Syntax: methodHeaderParameters :: TypedTerm MethodHeader -> TypedTerm [TypeParameter]
+ Hydra.Java.Dsl.Syntax: methodHeaderResult :: TypedTerm MethodHeader -> TypedTerm Result
+ Hydra.Java.Dsl.Syntax: methodHeaderThrows :: TypedTerm MethodHeader -> TypedTerm (Maybe Throws)
+ Hydra.Java.Dsl.Syntax: methodHeaderWithDeclarator :: TypedTerm MethodHeader -> TypedTerm MethodDeclarator -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodHeaderWithParameters :: TypedTerm MethodHeader -> TypedTerm [TypeParameter] -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodHeaderWithResult :: TypedTerm MethodHeader -> TypedTerm Result -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodHeaderWithThrows :: TypedTerm MethodHeader -> TypedTerm (Maybe Throws) -> TypedTerm MethodHeader
+ Hydra.Java.Dsl.Syntax: methodInvocation :: TypedTerm MethodInvocation_Header -> TypedTerm [Expression] -> TypedTerm MethodInvocation
+ Hydra.Java.Dsl.Syntax: methodInvocationArguments :: TypedTerm MethodInvocation -> TypedTerm [Expression]
+ Hydra.Java.Dsl.Syntax: methodInvocationHeader :: TypedTerm MethodInvocation -> TypedTerm MethodInvocation_Header
+ Hydra.Java.Dsl.Syntax: methodInvocationMethodInvocation :: TypedName MethodInvocation
+ Hydra.Java.Dsl.Syntax: methodInvocationWithArguments :: TypedTerm MethodInvocation -> TypedTerm [Expression] -> TypedTerm MethodInvocation
+ Hydra.Java.Dsl.Syntax: methodInvocationWithHeader :: TypedTerm MethodInvocation -> TypedTerm MethodInvocation_Header -> TypedTerm MethodInvocation
+ Hydra.Java.Dsl.Syntax: methodInvocation_Complex :: TypedTerm MethodInvocation_Variant -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodInvocation_Complex
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexIdentifier :: TypedTerm MethodInvocation_Complex -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexMethodInvocation_Complex :: TypedName MethodInvocation_Complex
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexTypeArguments :: TypedTerm MethodInvocation_Complex -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexVariant :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexWithIdentifier :: TypedTerm MethodInvocation_Complex -> TypedTerm Identifier -> TypedTerm MethodInvocation_Complex
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexWithTypeArguments :: TypedTerm MethodInvocation_Complex -> TypedTerm [TypeArgument] -> TypedTerm MethodInvocation_Complex
+ Hydra.Java.Dsl.Syntax: methodInvocation_ComplexWithVariant :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Variant -> TypedTerm MethodInvocation_Complex
+ Hydra.Java.Dsl.Syntax: methodInvocation_HeaderComplex :: TypedTerm MethodInvocation_Complex -> TypedTerm MethodInvocation_Header
+ Hydra.Java.Dsl.Syntax: methodInvocation_HeaderMethodInvocation_Header :: TypedName MethodInvocation_Header
+ Hydra.Java.Dsl.Syntax: methodInvocation_HeaderSimple :: TypedTerm MethodName -> TypedTerm MethodInvocation_Header
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantExpression :: TypedTerm ExpressionName -> TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantMethodInvocation_Variant :: TypedName MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantPrimary :: TypedTerm Primary -> TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantSuper :: TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantType :: TypedTerm TypeName -> TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodInvocation_VariantTypeSuper :: TypedTerm TypeName -> TypedTerm MethodInvocation_Variant
+ Hydra.Java.Dsl.Syntax: methodModifierAbstract :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierAnnotation :: TypedTerm Annotation -> TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierFinal :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierMethodModifier :: TypedName MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierNative :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierPrivate :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierProtected :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierPublic :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierStatic :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierStrictfp :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodModifierSynchronized :: TypedTerm MethodModifier
+ Hydra.Java.Dsl.Syntax: methodName :: TypedTerm Identifier -> TypedTerm MethodName
+ Hydra.Java.Dsl.Syntax: methodNameMethodName :: TypedName MethodName
+ Hydra.Java.Dsl.Syntax: methodReferenceArray :: TypedTerm MethodReference_Array -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferenceExpression :: TypedTerm MethodReference_Expression -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferenceMethodReference :: TypedName MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferenceNew :: TypedTerm MethodReference_New -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferencePrimary :: TypedTerm MethodReference_Primary -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferenceReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReferenceSuper :: TypedTerm MethodReference_Super -> TypedTerm MethodReference
+ Hydra.Java.Dsl.Syntax: methodReference_Array :: TypedTerm ArrayType -> TypedTerm MethodReference_Array
+ Hydra.Java.Dsl.Syntax: methodReference_ArrayMethodReference_Array :: TypedName MethodReference_Array
+ Hydra.Java.Dsl.Syntax: methodReference_Expression :: TypedTerm ExpressionName -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_Expression
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionIdentifier :: TypedTerm MethodReference_Expression -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionMethodReference_Expression :: TypedName MethodReference_Expression
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionName :: TypedTerm MethodReference_Expression -> TypedTerm ExpressionName
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionTypeArguments :: TypedTerm MethodReference_Expression -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionWithIdentifier :: TypedTerm MethodReference_Expression -> TypedTerm Identifier -> TypedTerm MethodReference_Expression
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionWithName :: TypedTerm MethodReference_Expression -> TypedTerm ExpressionName -> TypedTerm MethodReference_Expression
+ Hydra.Java.Dsl.Syntax: methodReference_ExpressionWithTypeArguments :: TypedTerm MethodReference_Expression -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Expression
+ Hydra.Java.Dsl.Syntax: methodReference_New :: TypedTerm ClassType -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_New
+ Hydra.Java.Dsl.Syntax: methodReference_NewClassType :: TypedTerm MethodReference_New -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: methodReference_NewMethodReference_New :: TypedName MethodReference_New
+ Hydra.Java.Dsl.Syntax: methodReference_NewTypeArguments :: TypedTerm MethodReference_New -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodReference_NewWithClassType :: TypedTerm MethodReference_New -> TypedTerm ClassType -> TypedTerm MethodReference_New
+ Hydra.Java.Dsl.Syntax: methodReference_NewWithTypeArguments :: TypedTerm MethodReference_New -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_New
+ Hydra.Java.Dsl.Syntax: methodReference_Primary :: TypedTerm Primary -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_Primary
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryIdentifier :: TypedTerm MethodReference_Primary -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryMethodReference_Primary :: TypedName MethodReference_Primary
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryPrimary :: TypedTerm MethodReference_Primary -> TypedTerm Primary
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryTypeArguments :: TypedTerm MethodReference_Primary -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryWithIdentifier :: TypedTerm MethodReference_Primary -> TypedTerm Identifier -> TypedTerm MethodReference_Primary
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryWithPrimary :: TypedTerm MethodReference_Primary -> TypedTerm Primary -> TypedTerm MethodReference_Primary
+ Hydra.Java.Dsl.Syntax: methodReference_PrimaryWithTypeArguments :: TypedTerm MethodReference_Primary -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Primary
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceType :: TypedTerm ReferenceType -> TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm MethodReference_ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeIdentifier :: TypedTerm MethodReference_ReferenceType -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeMethodReference_ReferenceType :: TypedName MethodReference_ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeTypeArguments :: TypedTerm MethodReference_ReferenceType -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeWithIdentifier :: TypedTerm MethodReference_ReferenceType -> TypedTerm Identifier -> TypedTerm MethodReference_ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeWithReferenceType :: TypedTerm MethodReference_ReferenceType -> TypedTerm ReferenceType -> TypedTerm MethodReference_ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_ReferenceTypeWithTypeArguments :: TypedTerm MethodReference_ReferenceType -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_ReferenceType
+ Hydra.Java.Dsl.Syntax: methodReference_Super :: TypedTerm [TypeArgument] -> TypedTerm Identifier -> TypedTerm Bool -> TypedTerm MethodReference_Super
+ Hydra.Java.Dsl.Syntax: methodReference_SuperIdentifier :: TypedTerm MethodReference_Super -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: methodReference_SuperMethodReference_Super :: TypedName MethodReference_Super
+ Hydra.Java.Dsl.Syntax: methodReference_SuperSuper :: TypedTerm MethodReference_Super -> TypedTerm Bool
+ Hydra.Java.Dsl.Syntax: methodReference_SuperTypeArguments :: TypedTerm MethodReference_Super -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: methodReference_SuperWithIdentifier :: TypedTerm MethodReference_Super -> TypedTerm Identifier -> TypedTerm MethodReference_Super
+ Hydra.Java.Dsl.Syntax: methodReference_SuperWithSuper :: TypedTerm MethodReference_Super -> TypedTerm Bool -> TypedTerm MethodReference_Super
+ Hydra.Java.Dsl.Syntax: methodReference_SuperWithTypeArguments :: TypedTerm MethodReference_Super -> TypedTerm [TypeArgument] -> TypedTerm MethodReference_Super
+ Hydra.Java.Dsl.Syntax: modularCompilationUnit :: TypedTerm [ImportDeclaration] -> TypedTerm ModuleDeclaration -> TypedTerm ModularCompilationUnit
+ Hydra.Java.Dsl.Syntax: modularCompilationUnitImports :: TypedTerm ModularCompilationUnit -> TypedTerm [ImportDeclaration]
+ Hydra.Java.Dsl.Syntax: modularCompilationUnitModularCompilationUnit :: TypedName ModularCompilationUnit
+ Hydra.Java.Dsl.Syntax: modularCompilationUnitModule :: TypedTerm ModularCompilationUnit -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: modularCompilationUnitWithImports :: TypedTerm ModularCompilationUnit -> TypedTerm [ImportDeclaration] -> TypedTerm ModularCompilationUnit
+ Hydra.Java.Dsl.Syntax: modularCompilationUnitWithModule :: TypedTerm ModularCompilationUnit -> TypedTerm ModuleDeclaration -> TypedTerm ModularCompilationUnit
+ Hydra.Java.Dsl.Syntax: moduleDeclaration :: TypedTerm [Annotation] -> TypedTerm Bool -> TypedTerm [Identifier] -> TypedTerm [ModuleDirective] -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDeclarationAnnotations :: TypedTerm ModuleDeclaration -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: moduleDeclarationDirectives :: TypedTerm ModuleDeclaration -> TypedTerm [ModuleDirective]
+ Hydra.Java.Dsl.Syntax: moduleDeclarationIdentifiers :: TypedTerm ModuleDeclaration -> TypedTerm [Identifier]
+ Hydra.Java.Dsl.Syntax: moduleDeclarationModuleDeclaration :: TypedName ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDeclarationOpen :: TypedTerm ModuleDeclaration -> TypedTerm Bool
+ Hydra.Java.Dsl.Syntax: moduleDeclarationWithAnnotations :: TypedTerm ModuleDeclaration -> TypedTerm [Annotation] -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDeclarationWithDirectives :: TypedTerm ModuleDeclaration -> TypedTerm [ModuleDirective] -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDeclarationWithIdentifiers :: TypedTerm ModuleDeclaration -> TypedTerm [Identifier] -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDeclarationWithOpen :: TypedTerm ModuleDeclaration -> TypedTerm Bool -> TypedTerm ModuleDeclaration
+ Hydra.Java.Dsl.Syntax: moduleDirectiveExports :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirectiveModuleDirective :: TypedName ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirectiveOpens :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirectiveProvides :: TypedTerm ModuleDirective_Provides -> TypedTerm ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirectiveRequires :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirectiveUses :: TypedTerm TypeName -> TypedTerm ModuleDirective
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpens :: TypedTerm PackageName -> TypedTerm [ModuleName] -> TypedTerm ModuleDirective_ExportsOrOpens
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens :: TypedName ModuleDirective_ExportsOrOpens
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpensModules :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm [ModuleName]
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpensPackage :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm PackageName
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpensWithModules :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm [ModuleName] -> TypedTerm ModuleDirective_ExportsOrOpens
+ Hydra.Java.Dsl.Syntax: moduleDirective_ExportsOrOpensWithPackage :: TypedTerm ModuleDirective_ExportsOrOpens -> TypedTerm PackageName -> TypedTerm ModuleDirective_ExportsOrOpens
+ Hydra.Java.Dsl.Syntax: moduleDirective_Provides :: TypedTerm TypeName -> TypedTerm [TypeName] -> TypedTerm ModuleDirective_Provides
+ Hydra.Java.Dsl.Syntax: moduleDirective_ProvidesModuleDirective_Provides :: TypedName ModuleDirective_Provides
+ Hydra.Java.Dsl.Syntax: moduleDirective_ProvidesTo :: TypedTerm ModuleDirective_Provides -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: moduleDirective_ProvidesWith :: TypedTerm ModuleDirective_Provides -> TypedTerm [TypeName]
+ Hydra.Java.Dsl.Syntax: moduleDirective_ProvidesWithTo :: TypedTerm ModuleDirective_Provides -> TypedTerm TypeName -> TypedTerm ModuleDirective_Provides
+ Hydra.Java.Dsl.Syntax: moduleDirective_ProvidesWithWith :: TypedTerm ModuleDirective_Provides -> TypedTerm [TypeName] -> TypedTerm ModuleDirective_Provides
+ Hydra.Java.Dsl.Syntax: moduleDirective_Requires :: TypedTerm [RequiresModifier] -> TypedTerm ModuleName -> TypedTerm ModuleDirective_Requires
+ Hydra.Java.Dsl.Syntax: moduleDirective_RequiresModifiers :: TypedTerm ModuleDirective_Requires -> TypedTerm [RequiresModifier]
+ Hydra.Java.Dsl.Syntax: moduleDirective_RequiresModule :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleName
+ Hydra.Java.Dsl.Syntax: moduleDirective_RequiresModuleDirective_Requires :: TypedName ModuleDirective_Requires
+ Hydra.Java.Dsl.Syntax: moduleDirective_RequiresWithModifiers :: TypedTerm ModuleDirective_Requires -> TypedTerm [RequiresModifier] -> TypedTerm ModuleDirective_Requires
+ Hydra.Java.Dsl.Syntax: moduleDirective_RequiresWithModule :: TypedTerm ModuleDirective_Requires -> TypedTerm ModuleName -> TypedTerm ModuleDirective_Requires
+ Hydra.Java.Dsl.Syntax: moduleName :: TypedTerm Identifier -> TypedTerm (Maybe ModuleName) -> TypedTerm ModuleName
+ Hydra.Java.Dsl.Syntax: moduleNameIdentifier :: TypedTerm ModuleName -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: moduleNameModuleName :: TypedName ModuleName
+ Hydra.Java.Dsl.Syntax: moduleNameName :: TypedTerm ModuleName -> TypedTerm (Maybe ModuleName)
+ Hydra.Java.Dsl.Syntax: moduleNameWithIdentifier :: TypedTerm ModuleName -> TypedTerm Identifier -> TypedTerm ModuleName
+ Hydra.Java.Dsl.Syntax: moduleNameWithName :: TypedTerm ModuleName -> TypedTerm (Maybe ModuleName) -> TypedTerm ModuleName
+ Hydra.Java.Dsl.Syntax: multiplicativeExpressionDivide :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpressionMod :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpressionMultiplicativeExpression :: TypedName MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpressionTimes :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpressionUnary :: TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_Binary :: TypedTerm MultiplicativeExpression -> TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression_Binary
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_BinaryLhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_BinaryMultiplicativeExpression_Binary :: TypedName MultiplicativeExpression_Binary
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_BinaryRhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_BinaryWithLhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm MultiplicativeExpression -> TypedTerm MultiplicativeExpression_Binary
+ Hydra.Java.Dsl.Syntax: multiplicativeExpression_BinaryWithRhs :: TypedTerm MultiplicativeExpression_Binary -> TypedTerm UnaryExpression -> TypedTerm MultiplicativeExpression_Binary
+ Hydra.Java.Dsl.Syntax: normalAnnotation :: TypedTerm TypeName -> TypedTerm [ElementValuePair] -> TypedTerm NormalAnnotation
+ Hydra.Java.Dsl.Syntax: normalAnnotationNormalAnnotation :: TypedName NormalAnnotation
+ Hydra.Java.Dsl.Syntax: normalAnnotationPairs :: TypedTerm NormalAnnotation -> TypedTerm [ElementValuePair]
+ Hydra.Java.Dsl.Syntax: normalAnnotationTypeName :: TypedTerm NormalAnnotation -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: normalAnnotationWithPairs :: TypedTerm NormalAnnotation -> TypedTerm [ElementValuePair] -> TypedTerm NormalAnnotation
+ Hydra.Java.Dsl.Syntax: normalAnnotationWithTypeName :: TypedTerm NormalAnnotation -> TypedTerm TypeName -> TypedTerm NormalAnnotation
+ Hydra.Java.Dsl.Syntax: normalClassDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm (Maybe ClassType) -> TypedTerm [InterfaceType] -> TypedTerm [TypeName] -> TypedTerm ClassBody -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationBody :: TypedTerm NormalClassDeclaration -> TypedTerm ClassBody
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationExtends :: TypedTerm NormalClassDeclaration -> TypedTerm (Maybe ClassType)
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationIdentifier :: TypedTerm NormalClassDeclaration -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationImplements :: TypedTerm NormalClassDeclaration -> TypedTerm [InterfaceType]
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationModifiers :: TypedTerm NormalClassDeclaration -> TypedTerm [ClassModifier]
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationNormalClassDeclaration :: TypedName NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationParameters :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationPermits :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeName]
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithBody :: TypedTerm NormalClassDeclaration -> TypedTerm ClassBody -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithExtends :: TypedTerm NormalClassDeclaration -> TypedTerm (Maybe ClassType) -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithIdentifier :: TypedTerm NormalClassDeclaration -> TypedTerm TypeIdentifier -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithImplements :: TypedTerm NormalClassDeclaration -> TypedTerm [InterfaceType] -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithModifiers :: TypedTerm NormalClassDeclaration -> TypedTerm [ClassModifier] -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithParameters :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeParameter] -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalClassDeclarationWithPermits :: TypedTerm NormalClassDeclaration -> TypedTerm [TypeName] -> TypedTerm NormalClassDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclaration :: TypedTerm [InterfaceModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm [InterfaceType] -> TypedTerm [TypeName] -> TypedTerm InterfaceBody -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationBody :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceBody
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationExtends :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceType]
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationIdentifier :: TypedTerm NormalInterfaceDeclaration -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationModifiers :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceModifier]
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationNormalInterfaceDeclaration :: TypedName NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationParameters :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationPermits :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeName]
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithBody :: TypedTerm NormalInterfaceDeclaration -> TypedTerm InterfaceBody -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithExtends :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceType] -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithIdentifier :: TypedTerm NormalInterfaceDeclaration -> TypedTerm TypeIdentifier -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithModifiers :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [InterfaceModifier] -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithParameters :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeParameter] -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: normalInterfaceDeclarationWithPermits :: TypedTerm NormalInterfaceDeclaration -> TypedTerm [TypeName] -> TypedTerm NormalInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: numericTypeArrayArray :: TypedTerm NumericTypeArray -> TypedTerm NumericTypeArray
+ Hydra.Java.Dsl.Syntax: numericTypeArrayNumericTypeArray :: TypedName NumericTypeArray
+ Hydra.Java.Dsl.Syntax: numericTypeArraySimple :: TypedTerm NumericType -> TypedTerm NumericTypeArray
+ Hydra.Java.Dsl.Syntax: numericTypeFloatingPoint :: TypedTerm FloatingPointType -> TypedTerm NumericType
+ Hydra.Java.Dsl.Syntax: numericTypeIntegral :: TypedTerm IntegralType -> TypedTerm NumericType
+ Hydra.Java.Dsl.Syntax: numericTypeNumericType :: TypedName NumericType
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnit :: TypedTerm (Maybe PackageDeclaration) -> TypedTerm [ImportDeclaration] -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments] -> TypedTerm OrdinaryCompilationUnit
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitImports :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [ImportDeclaration]
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitOrdinaryCompilationUnit :: TypedName OrdinaryCompilationUnit
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitPackage :: TypedTerm OrdinaryCompilationUnit -> TypedTerm (Maybe PackageDeclaration)
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitTypes :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments]
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitWithImports :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [ImportDeclaration] -> TypedTerm OrdinaryCompilationUnit
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitWithPackage :: TypedTerm OrdinaryCompilationUnit -> TypedTerm (Maybe PackageDeclaration) -> TypedTerm OrdinaryCompilationUnit
+ Hydra.Java.Dsl.Syntax: ordinaryCompilationUnitWithTypes :: TypedTerm OrdinaryCompilationUnit -> TypedTerm [TopLevelClassOrInterfaceDeclarationWithComments] -> TypedTerm OrdinaryCompilationUnit
+ Hydra.Java.Dsl.Syntax: packageDeclaration :: TypedTerm [PackageModifier] -> TypedTerm [Identifier] -> TypedTerm PackageDeclaration
+ Hydra.Java.Dsl.Syntax: packageDeclarationIdentifiers :: TypedTerm PackageDeclaration -> TypedTerm [Identifier]
+ Hydra.Java.Dsl.Syntax: packageDeclarationModifiers :: TypedTerm PackageDeclaration -> TypedTerm [PackageModifier]
+ Hydra.Java.Dsl.Syntax: packageDeclarationPackageDeclaration :: TypedName PackageDeclaration
+ Hydra.Java.Dsl.Syntax: packageDeclarationWithIdentifiers :: TypedTerm PackageDeclaration -> TypedTerm [Identifier] -> TypedTerm PackageDeclaration
+ Hydra.Java.Dsl.Syntax: packageDeclarationWithModifiers :: TypedTerm PackageDeclaration -> TypedTerm [PackageModifier] -> TypedTerm PackageDeclaration
+ Hydra.Java.Dsl.Syntax: packageModifier :: TypedTerm Annotation -> TypedTerm PackageModifier
+ Hydra.Java.Dsl.Syntax: packageModifierPackageModifier :: TypedName PackageModifier
+ Hydra.Java.Dsl.Syntax: packageName :: TypedTerm [Identifier] -> TypedTerm PackageName
+ Hydra.Java.Dsl.Syntax: packageNamePackageName :: TypedName PackageName
+ Hydra.Java.Dsl.Syntax: packageOrTypeName :: TypedTerm [Identifier] -> TypedTerm PackageOrTypeName
+ Hydra.Java.Dsl.Syntax: packageOrTypeNamePackageOrTypeName :: TypedName PackageOrTypeName
+ Hydra.Java.Dsl.Syntax: patternPattern :: TypedName Pattern
+ Hydra.Java.Dsl.Syntax: patternRecord :: TypedTerm RecordPattern -> TypedTerm Pattern
+ Hydra.Java.Dsl.Syntax: patternType :: TypedTerm TypePattern -> TypedTerm Pattern
+ Hydra.Java.Dsl.Syntax: postDecrementExpression :: TypedTerm PostfixExpression -> TypedTerm PostDecrementExpression
+ Hydra.Java.Dsl.Syntax: postDecrementExpressionPostDecrementExpression :: TypedName PostDecrementExpression
+ Hydra.Java.Dsl.Syntax: postIncrementExpression :: TypedTerm PostfixExpression -> TypedTerm PostIncrementExpression
+ Hydra.Java.Dsl.Syntax: postIncrementExpressionPostIncrementExpression :: TypedName PostIncrementExpression
+ Hydra.Java.Dsl.Syntax: postfixExpressionName :: TypedTerm ExpressionName -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: postfixExpressionPostDecrement :: TypedTerm PostDecrementExpression -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: postfixExpressionPostIncrement :: TypedTerm PostIncrementExpression -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: postfixExpressionPostfixExpression :: TypedName PostfixExpression
+ Hydra.Java.Dsl.Syntax: postfixExpressionPrimary :: TypedTerm Primary -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: preDecrementExpression :: TypedTerm UnaryExpression -> TypedTerm PreDecrementExpression
+ Hydra.Java.Dsl.Syntax: preDecrementExpressionPreDecrementExpression :: TypedName PreDecrementExpression
+ Hydra.Java.Dsl.Syntax: preIncrementExpression :: TypedTerm UnaryExpression -> TypedTerm PreIncrementExpression
+ Hydra.Java.Dsl.Syntax: preIncrementExpressionPreIncrementExpression :: TypedName PreIncrementExpression
+ Hydra.Java.Dsl.Syntax: primaryArrayCreation :: TypedTerm ArrayCreationExpression -> TypedTerm Primary
+ Hydra.Java.Dsl.Syntax: primaryNoNewArray :: TypedTerm PrimaryNoNewArrayExpression -> TypedTerm Primary
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionArrayAccess :: TypedTerm ArrayAccess -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionClassInstance :: TypedTerm ClassInstanceCreationExpression -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionClassLiteral :: TypedTerm ClassLiteral -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionDotThis :: TypedTerm TypeName -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionFieldAccess :: TypedTerm FieldAccess -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionLiteral :: TypedTerm Literal -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionMethodInvocation :: TypedTerm MethodInvocation -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionMethodReference :: TypedTerm MethodReference -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionParens :: TypedTerm Expression -> TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionPrimaryNoNewArrayExpression :: TypedName PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryNoNewArrayExpressionThis :: TypedTerm PrimaryNoNewArrayExpression
+ Hydra.Java.Dsl.Syntax: primaryPrimary :: TypedName Primary
+ Hydra.Java.Dsl.Syntax: primitiveTypeBoolean :: TypedTerm PrimitiveType
+ Hydra.Java.Dsl.Syntax: primitiveTypeNumeric :: TypedTerm NumericType -> TypedTerm PrimitiveType
+ Hydra.Java.Dsl.Syntax: primitiveTypePrimitiveType :: TypedName PrimitiveType
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotations :: TypedTerm PrimitiveType -> TypedTerm [Annotation] -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotationsAnnotations :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations :: TypedName PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotationsType :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm PrimitiveType
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotationsWithAnnotations :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm [Annotation] -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: primitiveTypeWithAnnotationsWithType :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm PrimitiveType -> TypedTerm PrimitiveTypeWithAnnotations
+ Hydra.Java.Dsl.Syntax: receiverParameter :: TypedTerm [Annotation] -> TypedTerm UnannType -> TypedTerm (Maybe Identifier) -> TypedTerm ReceiverParameter
+ Hydra.Java.Dsl.Syntax: receiverParameterAnnotations :: TypedTerm ReceiverParameter -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: receiverParameterIdentifier :: TypedTerm ReceiverParameter -> TypedTerm (Maybe Identifier)
+ Hydra.Java.Dsl.Syntax: receiverParameterReceiverParameter :: TypedName ReceiverParameter
+ Hydra.Java.Dsl.Syntax: receiverParameterUnannType :: TypedTerm ReceiverParameter -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: receiverParameterWithAnnotations :: TypedTerm ReceiverParameter -> TypedTerm [Annotation] -> TypedTerm ReceiverParameter
+ Hydra.Java.Dsl.Syntax: receiverParameterWithIdentifier :: TypedTerm ReceiverParameter -> TypedTerm (Maybe Identifier) -> TypedTerm ReceiverParameter
+ Hydra.Java.Dsl.Syntax: receiverParameterWithUnannType :: TypedTerm ReceiverParameter -> TypedTerm UnannType -> TypedTerm ReceiverParameter
+ Hydra.Java.Dsl.Syntax: recordBody :: TypedTerm [RecordBodyDeclaration] -> TypedTerm RecordBody
+ Hydra.Java.Dsl.Syntax: recordBodyDeclarationClassBody :: TypedTerm ClassBodyDeclaration -> TypedTerm RecordBodyDeclaration
+ Hydra.Java.Dsl.Syntax: recordBodyDeclarationCompactConstructor :: TypedTerm CompactConstructorDeclaration -> TypedTerm RecordBodyDeclaration
+ Hydra.Java.Dsl.Syntax: recordBodyDeclarationRecordBodyDeclaration :: TypedName RecordBodyDeclaration
+ Hydra.Java.Dsl.Syntax: recordBodyRecordBody :: TypedName RecordBody
+ Hydra.Java.Dsl.Syntax: recordComponentModifier :: TypedTerm Annotation -> TypedTerm RecordComponentModifier
+ Hydra.Java.Dsl.Syntax: recordComponentModifierRecordComponentModifier :: TypedName RecordComponentModifier
+ Hydra.Java.Dsl.Syntax: recordComponentRecordComponent :: TypedName RecordComponent
+ Hydra.Java.Dsl.Syntax: recordComponentSimple :: TypedTerm RecordComponent_Simple -> TypedTerm RecordComponent
+ Hydra.Java.Dsl.Syntax: recordComponentVariableArity :: TypedTerm VariableArityRecordComponent -> TypedTerm RecordComponent
+ Hydra.Java.Dsl.Syntax: recordComponent_Simple :: TypedTerm [RecordComponentModifier] -> TypedTerm UnannType -> TypedTerm Identifier -> TypedTerm RecordComponent_Simple
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleIdentifier :: TypedTerm RecordComponent_Simple -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleModifiers :: TypedTerm RecordComponent_Simple -> TypedTerm [RecordComponentModifier]
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleRecordComponent_Simple :: TypedName RecordComponent_Simple
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleType :: TypedTerm RecordComponent_Simple -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleWithIdentifier :: TypedTerm RecordComponent_Simple -> TypedTerm Identifier -> TypedTerm RecordComponent_Simple
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleWithModifiers :: TypedTerm RecordComponent_Simple -> TypedTerm [RecordComponentModifier] -> TypedTerm RecordComponent_Simple
+ Hydra.Java.Dsl.Syntax: recordComponent_SimpleWithType :: TypedTerm RecordComponent_Simple -> TypedTerm UnannType -> TypedTerm RecordComponent_Simple
+ Hydra.Java.Dsl.Syntax: recordDeclaration :: TypedTerm [ClassModifier] -> TypedTerm TypeIdentifier -> TypedTerm [TypeParameter] -> TypedTerm RecordHeader -> TypedTerm [InterfaceType] -> TypedTerm RecordBody -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationBody :: TypedTerm RecordDeclaration -> TypedTerm RecordBody
+ Hydra.Java.Dsl.Syntax: recordDeclarationHeader :: TypedTerm RecordDeclaration -> TypedTerm RecordHeader
+ Hydra.Java.Dsl.Syntax: recordDeclarationIdentifier :: TypedTerm RecordDeclaration -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: recordDeclarationImplements :: TypedTerm RecordDeclaration -> TypedTerm [InterfaceType]
+ Hydra.Java.Dsl.Syntax: recordDeclarationModifiers :: TypedTerm RecordDeclaration -> TypedTerm [ClassModifier]
+ Hydra.Java.Dsl.Syntax: recordDeclarationParameters :: TypedTerm RecordDeclaration -> TypedTerm [TypeParameter]
+ Hydra.Java.Dsl.Syntax: recordDeclarationRecordDeclaration :: TypedName RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithBody :: TypedTerm RecordDeclaration -> TypedTerm RecordBody -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithHeader :: TypedTerm RecordDeclaration -> TypedTerm RecordHeader -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithIdentifier :: TypedTerm RecordDeclaration -> TypedTerm TypeIdentifier -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithImplements :: TypedTerm RecordDeclaration -> TypedTerm [InterfaceType] -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithModifiers :: TypedTerm RecordDeclaration -> TypedTerm [ClassModifier] -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordDeclarationWithParameters :: TypedTerm RecordDeclaration -> TypedTerm [TypeParameter] -> TypedTerm RecordDeclaration
+ Hydra.Java.Dsl.Syntax: recordHeader :: TypedTerm [RecordComponent] -> TypedTerm RecordHeader
+ Hydra.Java.Dsl.Syntax: recordHeaderRecordHeader :: TypedName RecordHeader
+ Hydra.Java.Dsl.Syntax: recordPattern :: TypedTerm ReferenceType -> TypedTerm [Pattern] -> TypedTerm RecordPattern
+ Hydra.Java.Dsl.Syntax: recordPatternPatterns :: TypedTerm RecordPattern -> TypedTerm [Pattern]
+ Hydra.Java.Dsl.Syntax: recordPatternRecordPattern :: TypedName RecordPattern
+ Hydra.Java.Dsl.Syntax: recordPatternType :: TypedTerm RecordPattern -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: recordPatternWithPatterns :: TypedTerm RecordPattern -> TypedTerm [Pattern] -> TypedTerm RecordPattern
+ Hydra.Java.Dsl.Syntax: recordPatternWithType :: TypedTerm RecordPattern -> TypedTerm ReferenceType -> TypedTerm RecordPattern
+ Hydra.Java.Dsl.Syntax: referenceTypeArray :: TypedTerm ArrayType -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: referenceTypeClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: referenceTypeReferenceType :: TypedName ReferenceType
+ Hydra.Java.Dsl.Syntax: referenceTypeVariable :: TypedTerm TypeVariable -> TypedTerm ReferenceType
+ Hydra.Java.Dsl.Syntax: relationalExpressionGreaterThan :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionGreaterThanEqual :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionInstanceofExpression :: TypedTerm InstanceofExpression -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionLessThan :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionLessThanEqual :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionRelationalExpression :: TypedName RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpressionSimple :: TypedTerm ShiftExpression -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThan :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqual :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqualLhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual :: TypedName RelationalExpression_GreaterThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqualRhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqualWithLhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_GreaterThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanEqualWithRhs :: TypedTerm RelationalExpression_GreaterThanEqual -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanLhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanRelationalExpression_GreaterThan :: TypedName RelationalExpression_GreaterThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanRhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanWithLhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_GreaterThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_GreaterThanWithRhs :: TypedTerm RelationalExpression_GreaterThan -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_GreaterThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThan :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqual :: TypedTerm RelationalExpression -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqualLhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqualRelationalExpression_LessThanEqual :: TypedName RelationalExpression_LessThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqualRhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqualWithLhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_LessThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanEqualWithRhs :: TypedTerm RelationalExpression_LessThanEqual -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThanEqual
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanLhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanRelationalExpression_LessThan :: TypedName RelationalExpression_LessThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanRhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanWithLhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm RelationalExpression -> TypedTerm RelationalExpression_LessThan
+ Hydra.Java.Dsl.Syntax: relationalExpression_LessThanWithRhs :: TypedTerm RelationalExpression_LessThan -> TypedTerm ShiftExpression -> TypedTerm RelationalExpression_LessThan
+ Hydra.Java.Dsl.Syntax: requiresModifierRequiresModifier :: TypedName RequiresModifier
+ Hydra.Java.Dsl.Syntax: requiresModifierStatic :: TypedTerm RequiresModifier
+ Hydra.Java.Dsl.Syntax: requiresModifierTransitive :: TypedTerm RequiresModifier
+ Hydra.Java.Dsl.Syntax: resourceLocal :: TypedTerm Resource_Local -> TypedTerm Resource
+ Hydra.Java.Dsl.Syntax: resourceResource :: TypedName Resource
+ Hydra.Java.Dsl.Syntax: resourceSpecification :: TypedTerm [Resource] -> TypedTerm ResourceSpecification
+ Hydra.Java.Dsl.Syntax: resourceSpecificationResourceSpecification :: TypedName ResourceSpecification
+ Hydra.Java.Dsl.Syntax: resourceVariable :: TypedTerm VariableAccess -> TypedTerm Resource
+ Hydra.Java.Dsl.Syntax: resource_Local :: TypedTerm [VariableModifier] -> TypedTerm LocalVariableType -> TypedTerm Identifier -> TypedTerm Expression -> TypedTerm Resource_Local
+ Hydra.Java.Dsl.Syntax: resource_LocalExpression :: TypedTerm Resource_Local -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: resource_LocalIdentifier :: TypedTerm Resource_Local -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: resource_LocalModifiers :: TypedTerm Resource_Local -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: resource_LocalResource_Local :: TypedName Resource_Local
+ Hydra.Java.Dsl.Syntax: resource_LocalType :: TypedTerm Resource_Local -> TypedTerm LocalVariableType
+ Hydra.Java.Dsl.Syntax: resource_LocalWithExpression :: TypedTerm Resource_Local -> TypedTerm Expression -> TypedTerm Resource_Local
+ Hydra.Java.Dsl.Syntax: resource_LocalWithIdentifier :: TypedTerm Resource_Local -> TypedTerm Identifier -> TypedTerm Resource_Local
+ Hydra.Java.Dsl.Syntax: resource_LocalWithModifiers :: TypedTerm Resource_Local -> TypedTerm [VariableModifier] -> TypedTerm Resource_Local
+ Hydra.Java.Dsl.Syntax: resource_LocalWithType :: TypedTerm Resource_Local -> TypedTerm LocalVariableType -> TypedTerm Resource_Local
+ Hydra.Java.Dsl.Syntax: resultResult :: TypedName Result
+ Hydra.Java.Dsl.Syntax: resultType :: TypedTerm UnannType -> TypedTerm Result
+ Hydra.Java.Dsl.Syntax: resultVoid :: TypedTerm Result
+ Hydra.Java.Dsl.Syntax: returnStatement :: TypedTerm (Maybe Expression) -> TypedTerm ReturnStatement
+ Hydra.Java.Dsl.Syntax: returnStatementReturnStatement :: TypedName ReturnStatement
+ Hydra.Java.Dsl.Syntax: shiftExpressionShiftExpression :: TypedName ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpressionShiftLeft :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpressionShiftRight :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpressionShiftRightZeroFill :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpressionUnary :: TypedTerm AdditiveExpression -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpression_Binary :: TypedTerm ShiftExpression -> TypedTerm AdditiveExpression -> TypedTerm ShiftExpression_Binary
+ Hydra.Java.Dsl.Syntax: shiftExpression_BinaryLhs :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression
+ Hydra.Java.Dsl.Syntax: shiftExpression_BinaryRhs :: TypedTerm ShiftExpression_Binary -> TypedTerm AdditiveExpression
+ Hydra.Java.Dsl.Syntax: shiftExpression_BinaryShiftExpression_Binary :: TypedName ShiftExpression_Binary
+ Hydra.Java.Dsl.Syntax: shiftExpression_BinaryWithLhs :: TypedTerm ShiftExpression_Binary -> TypedTerm ShiftExpression -> TypedTerm ShiftExpression_Binary
+ Hydra.Java.Dsl.Syntax: shiftExpression_BinaryWithRhs :: TypedTerm ShiftExpression_Binary -> TypedTerm AdditiveExpression -> TypedTerm ShiftExpression_Binary
+ Hydra.Java.Dsl.Syntax: simpleTypeName :: TypedTerm TypeIdentifier -> TypedTerm SimpleTypeName
+ Hydra.Java.Dsl.Syntax: simpleTypeNameSimpleTypeName :: TypedName SimpleTypeName
+ Hydra.Java.Dsl.Syntax: singleElementAnnotation :: TypedTerm TypeName -> TypedTerm (Maybe ElementValue) -> TypedTerm SingleElementAnnotation
+ Hydra.Java.Dsl.Syntax: singleElementAnnotationName :: TypedTerm SingleElementAnnotation -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: singleElementAnnotationSingleElementAnnotation :: TypedName SingleElementAnnotation
+ Hydra.Java.Dsl.Syntax: singleElementAnnotationValue :: TypedTerm SingleElementAnnotation -> TypedTerm (Maybe ElementValue)
+ Hydra.Java.Dsl.Syntax: singleElementAnnotationWithName :: TypedTerm SingleElementAnnotation -> TypedTerm TypeName -> TypedTerm SingleElementAnnotation
+ Hydra.Java.Dsl.Syntax: singleElementAnnotationWithValue :: TypedTerm SingleElementAnnotation -> TypedTerm (Maybe ElementValue) -> TypedTerm SingleElementAnnotation
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclaration :: TypedTerm TypeName -> TypedTerm Identifier -> TypedTerm SingleStaticImportDeclaration
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclarationIdentifier :: TypedTerm SingleStaticImportDeclaration -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclarationSingleStaticImportDeclaration :: TypedName SingleStaticImportDeclaration
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclarationTypeName :: TypedTerm SingleStaticImportDeclaration -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclarationWithIdentifier :: TypedTerm SingleStaticImportDeclaration -> TypedTerm Identifier -> TypedTerm SingleStaticImportDeclaration
+ Hydra.Java.Dsl.Syntax: singleStaticImportDeclarationWithTypeName :: TypedTerm SingleStaticImportDeclaration -> TypedTerm TypeName -> TypedTerm SingleStaticImportDeclaration
+ Hydra.Java.Dsl.Syntax: singleTypeImportDeclaration :: TypedTerm TypeName -> TypedTerm SingleTypeImportDeclaration
+ Hydra.Java.Dsl.Syntax: singleTypeImportDeclarationSingleTypeImportDeclaration :: TypedName SingleTypeImportDeclaration
+ Hydra.Java.Dsl.Syntax: statementExpressionAssignment :: TypedTerm Assignment -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionClassInstanceCreation :: TypedTerm ClassInstanceCreationExpression -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionMethodInvocation :: TypedTerm MethodInvocation -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionPostDecrement :: TypedTerm PostDecrementExpression -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionPostIncrement :: TypedTerm PostIncrementExpression -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionPreDecrement :: TypedTerm PreDecrementExpression -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionPreIncrement :: TypedTerm PreIncrementExpression -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: statementExpressionStatementExpression :: TypedName StatementExpression
+ Hydra.Java.Dsl.Syntax: statementFor :: TypedTerm ForStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementIfThen :: TypedTerm IfThenStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementIfThenElse :: TypedTerm IfThenElseStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementLabeled :: TypedTerm LabeledStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementNoShortIfFor :: TypedTerm ForStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementNoShortIfIfThenElse :: TypedTerm IfThenElseStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementNoShortIfLabeled :: TypedTerm LabeledStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementNoShortIfStatementNoShortIf :: TypedName StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementNoShortIfWhile :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementNoShortIfWithoutTrailing :: TypedTerm StatementWithoutTrailingSubstatement -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: statementStatement :: TypedName Statement
+ Hydra.Java.Dsl.Syntax: statementWhile :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailing :: TypedTerm StatementWithoutTrailingSubstatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementAssert :: TypedTerm AssertStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementBlock :: TypedTerm Block -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementBreak :: TypedTerm BreakStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementContinue :: TypedTerm ContinueStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementDo :: TypedTerm DoStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementEmpty :: TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementExpression :: TypedTerm ExpressionStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementReturn :: TypedTerm ReturnStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement :: TypedName StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementSwitch :: TypedTerm SwitchStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementSynchronized :: TypedTerm SynchronizedStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementThrow :: TypedTerm ThrowStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementTry :: TypedTerm TryStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: statementWithoutTrailingSubstatementYield :: TypedTerm YieldStatement -> TypedTerm StatementWithoutTrailingSubstatement
+ Hydra.Java.Dsl.Syntax: staticImportOnDemandDeclaration :: TypedTerm TypeName -> TypedTerm StaticImportOnDemandDeclaration
+ Hydra.Java.Dsl.Syntax: staticImportOnDemandDeclarationStaticImportOnDemandDeclaration :: TypedName StaticImportOnDemandDeclaration
+ Hydra.Java.Dsl.Syntax: staticInitializer :: TypedTerm Block -> TypedTerm StaticInitializer
+ Hydra.Java.Dsl.Syntax: staticInitializerStaticInitializer :: TypedName StaticInitializer
+ Hydra.Java.Dsl.Syntax: stringLiteral :: TypedTerm String -> TypedTerm StringLiteral
+ Hydra.Java.Dsl.Syntax: stringLiteralStringLiteral :: TypedName StringLiteral
+ Hydra.Java.Dsl.Syntax: switchBlockLegacy :: TypedTerm SwitchBlock_Legacy -> TypedTerm SwitchBlock
+ Hydra.Java.Dsl.Syntax: switchBlockRules :: TypedTerm [SwitchRule] -> TypedTerm SwitchBlock
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroup :: TypedTerm [SwitchLabel] -> TypedTerm [BlockStatement] -> TypedTerm SwitchBlockStatementGroup
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroupLabels :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [SwitchLabel]
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroupStatements :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [BlockStatement]
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroupSwitchBlockStatementGroup :: TypedName SwitchBlockStatementGroup
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroupWithLabels :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlockStatementGroup
+ Hydra.Java.Dsl.Syntax: switchBlockStatementGroupWithStatements :: TypedTerm SwitchBlockStatementGroup -> TypedTerm [BlockStatement] -> TypedTerm SwitchBlockStatementGroup
+ Hydra.Java.Dsl.Syntax: switchBlockSwitchBlock :: TypedName SwitchBlock
+ Hydra.Java.Dsl.Syntax: switchBlock_Legacy :: TypedTerm [SwitchBlockStatementGroup] -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlock_Legacy
+ Hydra.Java.Dsl.Syntax: switchBlock_LegacyGroups :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchBlockStatementGroup]
+ Hydra.Java.Dsl.Syntax: switchBlock_LegacySwitchBlock_Legacy :: TypedName SwitchBlock_Legacy
+ Hydra.Java.Dsl.Syntax: switchBlock_LegacyTrailingLabels :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchLabel]
+ Hydra.Java.Dsl.Syntax: switchBlock_LegacyWithGroups :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchBlockStatementGroup] -> TypedTerm SwitchBlock_Legacy
+ Hydra.Java.Dsl.Syntax: switchBlock_LegacyWithTrailingLabels :: TypedTerm SwitchBlock_Legacy -> TypedTerm [SwitchLabel] -> TypedTerm SwitchBlock_Legacy
+ Hydra.Java.Dsl.Syntax: switchExpression :: TypedTerm Expression -> TypedTerm SwitchBlock -> TypedTerm SwitchExpression
+ Hydra.Java.Dsl.Syntax: switchExpressionBlock :: TypedTerm SwitchExpression -> TypedTerm SwitchBlock
+ Hydra.Java.Dsl.Syntax: switchExpressionCond :: TypedTerm SwitchExpression -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: switchExpressionSwitchExpression :: TypedName SwitchExpression
+ Hydra.Java.Dsl.Syntax: switchExpressionWithBlock :: TypedTerm SwitchExpression -> TypedTerm SwitchBlock -> TypedTerm SwitchExpression
+ Hydra.Java.Dsl.Syntax: switchExpressionWithCond :: TypedTerm SwitchExpression -> TypedTerm Expression -> TypedTerm SwitchExpression
+ Hydra.Java.Dsl.Syntax: switchLabelCase :: TypedTerm [CaseConstant] -> TypedTerm SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchLabelCasePattern :: TypedTerm CasePattern -> TypedTerm SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchLabelDefault :: TypedTerm SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchLabelNull :: TypedTerm Bool -> TypedTerm SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchLabelSwitchLabel :: TypedName SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchRule :: TypedTerm SwitchLabel -> TypedTerm SwitchRule_Body -> TypedTerm SwitchRule
+ Hydra.Java.Dsl.Syntax: switchRuleBody :: TypedTerm SwitchRule -> TypedTerm SwitchRule_Body
+ Hydra.Java.Dsl.Syntax: switchRuleLabel :: TypedTerm SwitchRule -> TypedTerm SwitchLabel
+ Hydra.Java.Dsl.Syntax: switchRuleSwitchRule :: TypedName SwitchRule
+ Hydra.Java.Dsl.Syntax: switchRuleWithBody :: TypedTerm SwitchRule -> TypedTerm SwitchRule_Body -> TypedTerm SwitchRule
+ Hydra.Java.Dsl.Syntax: switchRuleWithLabel :: TypedTerm SwitchRule -> TypedTerm SwitchLabel -> TypedTerm SwitchRule
+ Hydra.Java.Dsl.Syntax: switchRule_BodyBlock :: TypedTerm Block -> TypedTerm SwitchRule_Body
+ Hydra.Java.Dsl.Syntax: switchRule_BodyExpression :: TypedTerm Expression -> TypedTerm SwitchRule_Body
+ Hydra.Java.Dsl.Syntax: switchRule_BodySwitchRule_Body :: TypedName SwitchRule_Body
+ Hydra.Java.Dsl.Syntax: switchRule_BodyThrow :: TypedTerm ThrowStatement -> TypedTerm SwitchRule_Body
+ Hydra.Java.Dsl.Syntax: switchStatement :: TypedTerm Expression -> TypedTerm SwitchBlock -> TypedTerm SwitchStatement
+ Hydra.Java.Dsl.Syntax: switchStatementBlock :: TypedTerm SwitchStatement -> TypedTerm SwitchBlock
+ Hydra.Java.Dsl.Syntax: switchStatementCond :: TypedTerm SwitchStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: switchStatementSwitchStatement :: TypedName SwitchStatement
+ Hydra.Java.Dsl.Syntax: switchStatementWithBlock :: TypedTerm SwitchStatement -> TypedTerm SwitchBlock -> TypedTerm SwitchStatement
+ Hydra.Java.Dsl.Syntax: switchStatementWithCond :: TypedTerm SwitchStatement -> TypedTerm Expression -> TypedTerm SwitchStatement
+ Hydra.Java.Dsl.Syntax: synchronizedStatement :: TypedTerm Expression -> TypedTerm Block -> TypedTerm SynchronizedStatement
+ Hydra.Java.Dsl.Syntax: synchronizedStatementBlock :: TypedTerm SynchronizedStatement -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: synchronizedStatementExpression :: TypedTerm SynchronizedStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: synchronizedStatementSynchronizedStatement :: TypedName SynchronizedStatement
+ Hydra.Java.Dsl.Syntax: synchronizedStatementWithBlock :: TypedTerm SynchronizedStatement -> TypedTerm Block -> TypedTerm SynchronizedStatement
+ Hydra.Java.Dsl.Syntax: synchronizedStatementWithExpression :: TypedTerm SynchronizedStatement -> TypedTerm Expression -> TypedTerm SynchronizedStatement
+ Hydra.Java.Dsl.Syntax: textBlock :: TypedTerm String -> TypedTerm TextBlock
+ Hydra.Java.Dsl.Syntax: textBlockTextBlock :: TypedName TextBlock
+ Hydra.Java.Dsl.Syntax: throwStatement :: TypedTerm Expression -> TypedTerm ThrowStatement
+ Hydra.Java.Dsl.Syntax: throwStatementThrowStatement :: TypedName ThrowStatement
+ Hydra.Java.Dsl.Syntax: throws :: TypedTerm [ExceptionType] -> TypedTerm Throws
+ Hydra.Java.Dsl.Syntax: throwsThrows :: TypedName Throws
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationClass :: TypedTerm ClassDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationInterface :: TypedTerm InterfaceDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationNone :: TypedTerm TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration :: TypedName TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithComments :: TypedTerm TopLevelClassOrInterfaceDeclaration -> TypedTerm (Maybe String) -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsComments :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm (Maybe String)
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments :: TypedName TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsValue :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsWithComments :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm (Maybe String) -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: topLevelClassOrInterfaceDeclarationWithCommentsWithValue :: TypedTerm TopLevelClassOrInterfaceDeclarationWithComments -> TypedTerm TopLevelClassOrInterfaceDeclaration -> TypedTerm TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Dsl.Syntax: tryStatementSimple :: TypedTerm TryStatement_Simple -> TypedTerm TryStatement
+ Hydra.Java.Dsl.Syntax: tryStatementTryStatement :: TypedName TryStatement
+ Hydra.Java.Dsl.Syntax: tryStatementWithFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm TryStatement
+ Hydra.Java.Dsl.Syntax: tryStatementWithResources :: TypedTerm TryWithResourcesStatement -> TypedTerm TryStatement
+ Hydra.Java.Dsl.Syntax: tryStatement_Simple :: TypedTerm Block -> TypedTerm Catches -> TypedTerm TryStatement_Simple
+ Hydra.Java.Dsl.Syntax: tryStatement_SimpleBlock :: TypedTerm TryStatement_Simple -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: tryStatement_SimpleCatches :: TypedTerm TryStatement_Simple -> TypedTerm Catches
+ Hydra.Java.Dsl.Syntax: tryStatement_SimpleTryStatement_Simple :: TypedName TryStatement_Simple
+ Hydra.Java.Dsl.Syntax: tryStatement_SimpleWithBlock :: TypedTerm TryStatement_Simple -> TypedTerm Block -> TypedTerm TryStatement_Simple
+ Hydra.Java.Dsl.Syntax: tryStatement_SimpleWithCatches :: TypedTerm TryStatement_Simple -> TypedTerm Catches -> TypedTerm TryStatement_Simple
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinally :: TypedTerm Block -> TypedTerm (Maybe Catches) -> TypedTerm Finally -> TypedTerm TryStatement_WithFinally
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyBlock :: TypedTerm TryStatement_WithFinally -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyCatches :: TypedTerm TryStatement_WithFinally -> TypedTerm (Maybe Catches)
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm Finally
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyTryStatement_WithFinally :: TypedName TryStatement_WithFinally
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyWithBlock :: TypedTerm TryStatement_WithFinally -> TypedTerm Block -> TypedTerm TryStatement_WithFinally
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyWithCatches :: TypedTerm TryStatement_WithFinally -> TypedTerm (Maybe Catches) -> TypedTerm TryStatement_WithFinally
+ Hydra.Java.Dsl.Syntax: tryStatement_WithFinallyWithFinally :: TypedTerm TryStatement_WithFinally -> TypedTerm Finally -> TypedTerm TryStatement_WithFinally
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatement :: TypedTerm ResourceSpecification -> TypedTerm Block -> TypedTerm (Maybe Catches) -> TypedTerm (Maybe Finally) -> TypedTerm TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementBlock :: TypedTerm TryWithResourcesStatement -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementCatches :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Catches)
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementFinally :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Finally)
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementResourceSpecification :: TypedTerm TryWithResourcesStatement -> TypedTerm ResourceSpecification
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementTryWithResourcesStatement :: TypedName TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementWithBlock :: TypedTerm TryWithResourcesStatement -> TypedTerm Block -> TypedTerm TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementWithCatches :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Catches) -> TypedTerm TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementWithFinally :: TypedTerm TryWithResourcesStatement -> TypedTerm (Maybe Finally) -> TypedTerm TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: tryWithResourcesStatementWithResourceSpecification :: TypedTerm TryWithResourcesStatement -> TypedTerm ResourceSpecification -> TypedTerm TryWithResourcesStatement
+ Hydra.Java.Dsl.Syntax: typeArgumentReference :: TypedTerm ReferenceType -> TypedTerm TypeArgument
+ Hydra.Java.Dsl.Syntax: typeArgumentTypeArgument :: TypedName TypeArgument
+ Hydra.Java.Dsl.Syntax: typeArgumentWildcard :: TypedTerm Wildcard -> TypedTerm TypeArgument
+ Hydra.Java.Dsl.Syntax: typeArgumentsOrDiamondArguments :: TypedTerm [TypeArgument] -> TypedTerm TypeArgumentsOrDiamond
+ Hydra.Java.Dsl.Syntax: typeArgumentsOrDiamondDiamond :: TypedTerm TypeArgumentsOrDiamond
+ Hydra.Java.Dsl.Syntax: typeArgumentsOrDiamondTypeArgumentsOrDiamond :: TypedName TypeArgumentsOrDiamond
+ Hydra.Java.Dsl.Syntax: typeBoundClassOrInterface :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm TypeBound
+ Hydra.Java.Dsl.Syntax: typeBoundTypeBound :: TypedName TypeBound
+ Hydra.Java.Dsl.Syntax: typeBoundVariable :: TypedTerm TypeVariable -> TypedTerm TypeBound
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterface :: TypedTerm ClassOrInterfaceType -> TypedTerm [AdditionalBound] -> TypedTerm TypeBound_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterfaceAdditional :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm [AdditionalBound]
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterfaceType :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm ClassOrInterfaceType
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterfaceTypeBound_ClassOrInterface :: TypedName TypeBound_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterfaceWithAdditional :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm [AdditionalBound] -> TypedTerm TypeBound_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: typeBound_ClassOrInterfaceWithType :: TypedTerm TypeBound_ClassOrInterface -> TypedTerm ClassOrInterfaceType -> TypedTerm TypeBound_ClassOrInterface
+ Hydra.Java.Dsl.Syntax: typeIdentifier :: TypedTerm Identifier -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: typeIdentifierTypeIdentifier :: TypedName TypeIdentifier
+ Hydra.Java.Dsl.Syntax: typeImportOnDemandDeclaration :: TypedTerm PackageOrTypeName -> TypedTerm TypeImportOnDemandDeclaration
+ Hydra.Java.Dsl.Syntax: typeImportOnDemandDeclarationTypeImportOnDemandDeclaration :: TypedName TypeImportOnDemandDeclaration
+ Hydra.Java.Dsl.Syntax: typeName :: TypedTerm TypeIdentifier -> TypedTerm (Maybe PackageOrTypeName) -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: typeNameArrayArray :: TypedTerm TypeNameArray -> TypedTerm TypeNameArray
+ Hydra.Java.Dsl.Syntax: typeNameArraySimple :: TypedTerm TypeName -> TypedTerm TypeNameArray
+ Hydra.Java.Dsl.Syntax: typeNameArrayTypeNameArray :: TypedName TypeNameArray
+ Hydra.Java.Dsl.Syntax: typeNameIdentifier :: TypedTerm TypeName -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: typeNameQualifier :: TypedTerm TypeName -> TypedTerm (Maybe PackageOrTypeName)
+ Hydra.Java.Dsl.Syntax: typeNameTypeName :: TypedName TypeName
+ Hydra.Java.Dsl.Syntax: typeNameWithIdentifier :: TypedTerm TypeName -> TypedTerm TypeIdentifier -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: typeNameWithQualifier :: TypedTerm TypeName -> TypedTerm (Maybe PackageOrTypeName) -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: typeParameter :: TypedTerm [TypeParameterModifier] -> TypedTerm TypeIdentifier -> TypedTerm (Maybe TypeBound) -> TypedTerm TypeParameter
+ Hydra.Java.Dsl.Syntax: typeParameterBound :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeBound)
+ Hydra.Java.Dsl.Syntax: typeParameterIdentifier :: TypedTerm TypeParameter -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: typeParameterModifier :: TypedTerm Annotation -> TypedTerm TypeParameterModifier
+ Hydra.Java.Dsl.Syntax: typeParameterModifierTypeParameterModifier :: TypedName TypeParameterModifier
+ Hydra.Java.Dsl.Syntax: typeParameterModifiers :: TypedTerm TypeParameter -> TypedTerm [TypeParameterModifier]
+ Hydra.Java.Dsl.Syntax: typeParameterTypeParameter :: TypedName TypeParameter
+ Hydra.Java.Dsl.Syntax: typeParameterWithBound :: TypedTerm TypeParameter -> TypedTerm (Maybe TypeBound) -> TypedTerm TypeParameter
+ Hydra.Java.Dsl.Syntax: typeParameterWithIdentifier :: TypedTerm TypeParameter -> TypedTerm TypeIdentifier -> TypedTerm TypeParameter
+ Hydra.Java.Dsl.Syntax: typeParameterWithModifiers :: TypedTerm TypeParameter -> TypedTerm [TypeParameterModifier] -> TypedTerm TypeParameter
+ Hydra.Java.Dsl.Syntax: typePattern :: TypedTerm LocalVariableDeclaration -> TypedTerm TypePattern
+ Hydra.Java.Dsl.Syntax: typePatternTypePattern :: TypedName TypePattern
+ Hydra.Java.Dsl.Syntax: typePrimitive :: TypedTerm PrimitiveTypeWithAnnotations -> TypedTerm Type
+ Hydra.Java.Dsl.Syntax: typeReference :: TypedTerm ReferenceType -> TypedTerm Type
+ Hydra.Java.Dsl.Syntax: typeType :: TypedName Type
+ Hydra.Java.Dsl.Syntax: typeVariable :: TypedTerm [Annotation] -> TypedTerm TypeIdentifier -> TypedTerm TypeVariable
+ Hydra.Java.Dsl.Syntax: typeVariableAnnotations :: TypedTerm TypeVariable -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: typeVariableIdentifier :: TypedTerm TypeVariable -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: typeVariableTypeVariable :: TypedName TypeVariable
+ Hydra.Java.Dsl.Syntax: typeVariableWithAnnotations :: TypedTerm TypeVariable -> TypedTerm [Annotation] -> TypedTerm TypeVariable
+ Hydra.Java.Dsl.Syntax: typeVariableWithIdentifier :: TypedTerm TypeVariable -> TypedTerm TypeIdentifier -> TypedTerm TypeVariable
+ Hydra.Java.Dsl.Syntax: unAdditionalBound :: TypedTerm AdditionalBound -> TypedTerm InterfaceType
+ Hydra.Java.Dsl.Syntax: unAmbiguousName :: TypedTerm AmbiguousName -> TypedTerm [Identifier]
+ Hydra.Java.Dsl.Syntax: unAndExpression :: TypedTerm AndExpression -> TypedTerm [EqualityExpression]
+ Hydra.Java.Dsl.Syntax: unAnnotationInterfaceBody :: TypedTerm AnnotationInterfaceBody -> TypedTerm [AnnotationInterfaceMemberDeclaration]
+ Hydra.Java.Dsl.Syntax: unArrayInitializer :: TypedTerm ArrayInitializer -> TypedTerm [[VariableInitializer]]
+ Hydra.Java.Dsl.Syntax: unBlock :: TypedTerm Block -> TypedTerm [BlockStatement]
+ Hydra.Java.Dsl.Syntax: unBreakStatement :: TypedTerm BreakStatement -> TypedTerm (Maybe Identifier)
+ Hydra.Java.Dsl.Syntax: unCaseConstant :: TypedTerm CaseConstant -> TypedTerm ConditionalExpression
+ Hydra.Java.Dsl.Syntax: unCatches :: TypedTerm Catches -> TypedTerm [CatchClause]
+ Hydra.Java.Dsl.Syntax: unClassBody :: TypedTerm ClassBody -> TypedTerm [ClassBodyDeclarationWithComments]
+ Hydra.Java.Dsl.Syntax: unConditionalAndExpression :: TypedTerm ConditionalAndExpression -> TypedTerm [InclusiveOrExpression]
+ Hydra.Java.Dsl.Syntax: unConditionalOrExpression :: TypedTerm ConditionalOrExpression -> TypedTerm [ConditionalAndExpression]
+ Hydra.Java.Dsl.Syntax: unConstantExpression :: TypedTerm ConstantExpression -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: unContinueStatement :: TypedTerm ContinueStatement -> TypedTerm (Maybe Identifier)
+ Hydra.Java.Dsl.Syntax: unDefaultValue :: TypedTerm DefaultValue -> TypedTerm ElementValue
+ Hydra.Java.Dsl.Syntax: unDims :: TypedTerm Dims -> TypedTerm [[Annotation]]
+ Hydra.Java.Dsl.Syntax: unElementValueArrayInitializer :: TypedTerm ElementValueArrayInitializer -> TypedTerm [ElementValue]
+ Hydra.Java.Dsl.Syntax: unEnumBody :: TypedTerm EnumBody -> TypedTerm [EnumBody_Element]
+ Hydra.Java.Dsl.Syntax: unEnumConstantModifier :: TypedTerm EnumConstantModifier -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: unExclusiveOrExpression :: TypedTerm ExclusiveOrExpression -> TypedTerm [AndExpression]
+ Hydra.Java.Dsl.Syntax: unExpressionStatement :: TypedTerm ExpressionStatement -> TypedTerm StatementExpression
+ Hydra.Java.Dsl.Syntax: unFinally :: TypedTerm Finally -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: unFloatingPointLiteral :: TypedTerm FloatingPointLiteral -> TypedTerm Double
+ Hydra.Java.Dsl.Syntax: unForUpdate :: TypedTerm ForUpdate -> TypedTerm [StatementExpression]
+ Hydra.Java.Dsl.Syntax: unGuard :: TypedTerm Guard -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: unIdentifier :: TypedTerm Identifier -> TypedTerm String
+ Hydra.Java.Dsl.Syntax: unInclusiveOrExpression :: TypedTerm InclusiveOrExpression -> TypedTerm [ExclusiveOrExpression]
+ Hydra.Java.Dsl.Syntax: unInstanceInitializer :: TypedTerm InstanceInitializer -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: unIntegerLiteral :: TypedTerm IntegerLiteral -> TypedTerm Integer
+ Hydra.Java.Dsl.Syntax: unInterfaceBody :: TypedTerm InterfaceBody -> TypedTerm [InterfaceMemberDeclarationWithComments]
+ Hydra.Java.Dsl.Syntax: unInterfaceType :: TypedTerm InterfaceType -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: unLocalVariableDeclarationStatement :: TypedTerm LocalVariableDeclarationStatement -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: unMarkerAnnotation :: TypedTerm MarkerAnnotation -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: unMethodName :: TypedTerm MethodName -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: unMethodReference_Array :: TypedTerm MethodReference_Array -> TypedTerm ArrayType
+ Hydra.Java.Dsl.Syntax: unPackageModifier :: TypedTerm PackageModifier -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: unPackageName :: TypedTerm PackageName -> TypedTerm [Identifier]
+ Hydra.Java.Dsl.Syntax: unPackageOrTypeName :: TypedTerm PackageOrTypeName -> TypedTerm [Identifier]
+ Hydra.Java.Dsl.Syntax: unPostDecrementExpression :: TypedTerm PostDecrementExpression -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: unPostIncrementExpression :: TypedTerm PostIncrementExpression -> TypedTerm PostfixExpression
+ Hydra.Java.Dsl.Syntax: unPreDecrementExpression :: TypedTerm PreDecrementExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unPreIncrementExpression :: TypedTerm PreIncrementExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unRecordBody :: TypedTerm RecordBody -> TypedTerm [RecordBodyDeclaration]
+ Hydra.Java.Dsl.Syntax: unRecordComponentModifier :: TypedTerm RecordComponentModifier -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: unRecordHeader :: TypedTerm RecordHeader -> TypedTerm [RecordComponent]
+ Hydra.Java.Dsl.Syntax: unResourceSpecification :: TypedTerm ResourceSpecification -> TypedTerm [Resource]
+ Hydra.Java.Dsl.Syntax: unReturnStatement :: TypedTerm ReturnStatement -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: unSimpleTypeName :: TypedTerm SimpleTypeName -> TypedTerm TypeIdentifier
+ Hydra.Java.Dsl.Syntax: unSingleTypeImportDeclaration :: TypedTerm SingleTypeImportDeclaration -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: unStaticImportOnDemandDeclaration :: TypedTerm StaticImportOnDemandDeclaration -> TypedTerm TypeName
+ Hydra.Java.Dsl.Syntax: unStaticInitializer :: TypedTerm StaticInitializer -> TypedTerm Block
+ Hydra.Java.Dsl.Syntax: unStringLiteral :: TypedTerm StringLiteral -> TypedTerm String
+ Hydra.Java.Dsl.Syntax: unTextBlock :: TypedTerm TextBlock -> TypedTerm String
+ Hydra.Java.Dsl.Syntax: unThrowStatement :: TypedTerm ThrowStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: unThrows :: TypedTerm Throws -> TypedTerm [ExceptionType]
+ Hydra.Java.Dsl.Syntax: unTypeIdentifier :: TypedTerm TypeIdentifier -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: unTypeImportOnDemandDeclaration :: TypedTerm TypeImportOnDemandDeclaration -> TypedTerm PackageOrTypeName
+ Hydra.Java.Dsl.Syntax: unTypeParameterModifier :: TypedTerm TypeParameterModifier -> TypedTerm Annotation
+ Hydra.Java.Dsl.Syntax: unTypePattern :: TypedTerm TypePattern -> TypedTerm LocalVariableDeclaration
+ Hydra.Java.Dsl.Syntax: unUnannClassType :: TypedTerm UnannClassType -> TypedTerm ClassType
+ Hydra.Java.Dsl.Syntax: unUnannType :: TypedTerm UnannType -> TypedTerm Type
+ Hydra.Java.Dsl.Syntax: unYieldStatement :: TypedTerm YieldStatement -> TypedTerm Expression
+ Hydra.Java.Dsl.Syntax: unannClassType :: TypedTerm ClassType -> TypedTerm UnannClassType
+ Hydra.Java.Dsl.Syntax: unannClassTypeUnannClassType :: TypedName UnannClassType
+ Hydra.Java.Dsl.Syntax: unannType :: TypedTerm Type -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: unannTypeUnannType :: TypedName UnannType
+ Hydra.Java.Dsl.Syntax: unaryExpressionMinus :: TypedTerm UnaryExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusCast :: TypedTerm CastExpression -> TypedTerm UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusNot :: TypedTerm UnaryExpression -> TypedTerm UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusPostfix :: TypedTerm PostfixExpression -> TypedTerm UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusSwitchExpression :: TypedTerm SwitchExpression -> TypedTerm UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusTilde :: TypedTerm UnaryExpression -> TypedTerm UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus :: TypedName UnaryExpressionNotPlusMinus
+ Hydra.Java.Dsl.Syntax: unaryExpressionOther :: TypedTerm UnaryExpressionNotPlusMinus -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unaryExpressionPlus :: TypedTerm UnaryExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unaryExpressionPreDecrement :: TypedTerm PreDecrementExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unaryExpressionPreIncrement :: TypedTerm PreIncrementExpression -> TypedTerm UnaryExpression
+ Hydra.Java.Dsl.Syntax: unaryExpressionUnaryExpression :: TypedName UnaryExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpression :: TypedTerm [TypeArgument] -> TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm [Expression] -> TypedTerm (Maybe ClassBody) -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [Expression]
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionBody :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm (Maybe ClassBody)
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionClassOrInterface :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionTypeArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [TypeArgument]
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression :: TypedName UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionWithArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [Expression] -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionWithBody :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm (Maybe ClassBody) -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionWithClassOrInterface :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm ClassOrInterfaceTypeToInstantiate -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: unqualifiedClassInstanceCreationExpressionWithTypeArguments :: TypedTerm UnqualifiedClassInstanceCreationExpression -> TypedTerm [TypeArgument] -> TypedTerm UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Dsl.Syntax: variableAccessExpressionName :: TypedTerm ExpressionName -> TypedTerm VariableAccess
+ Hydra.Java.Dsl.Syntax: variableAccessFieldAccess :: TypedTerm FieldAccess -> TypedTerm VariableAccess
+ Hydra.Java.Dsl.Syntax: variableAccessVariableAccess :: TypedName VariableAccess
+ Hydra.Java.Dsl.Syntax: variableArityParameter :: TypedTerm [VariableModifier] -> TypedTerm UnannType -> TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityParameterAnnotations :: TypedTerm VariableArityParameter -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: variableArityParameterIdentifier :: TypedTerm VariableArityParameter -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: variableArityParameterModifiers :: TypedTerm VariableArityParameter -> TypedTerm [VariableModifier]
+ Hydra.Java.Dsl.Syntax: variableArityParameterType :: TypedTerm VariableArityParameter -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: variableArityParameterVariableArityParameter :: TypedName VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityParameterWithAnnotations :: TypedTerm VariableArityParameter -> TypedTerm [Annotation] -> TypedTerm VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityParameterWithIdentifier :: TypedTerm VariableArityParameter -> TypedTerm Identifier -> TypedTerm VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityParameterWithModifiers :: TypedTerm VariableArityParameter -> TypedTerm [VariableModifier] -> TypedTerm VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityParameterWithType :: TypedTerm VariableArityParameter -> TypedTerm UnannType -> TypedTerm VariableArityParameter
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponent :: TypedTerm [RecordComponentModifier] -> TypedTerm UnannType -> TypedTerm [Annotation] -> TypedTerm Identifier -> TypedTerm VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentAnnotations :: TypedTerm VariableArityRecordComponent -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentIdentifier :: TypedTerm VariableArityRecordComponent -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentModifiers :: TypedTerm VariableArityRecordComponent -> TypedTerm [RecordComponentModifier]
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentType :: TypedTerm VariableArityRecordComponent -> TypedTerm UnannType
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentVariableArityRecordComponent :: TypedName VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentWithAnnotations :: TypedTerm VariableArityRecordComponent -> TypedTerm [Annotation] -> TypedTerm VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentWithIdentifier :: TypedTerm VariableArityRecordComponent -> TypedTerm Identifier -> TypedTerm VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentWithModifiers :: TypedTerm VariableArityRecordComponent -> TypedTerm [RecordComponentModifier] -> TypedTerm VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableArityRecordComponentWithType :: TypedTerm VariableArityRecordComponent -> TypedTerm UnannType -> TypedTerm VariableArityRecordComponent
+ Hydra.Java.Dsl.Syntax: variableDeclarator :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe VariableInitializer) -> TypedTerm VariableDeclarator
+ Hydra.Java.Dsl.Syntax: variableDeclaratorId :: TypedTerm VariableDeclarator -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: variableDeclaratorId2 :: TypedTerm Identifier -> TypedTerm (Maybe Dims) -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: variableDeclaratorIdDims :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe Dims)
+ Hydra.Java.Dsl.Syntax: variableDeclaratorIdIdentifier :: TypedTerm VariableDeclaratorId -> TypedTerm Identifier
+ Hydra.Java.Dsl.Syntax: variableDeclaratorIdVariableDeclaratorId :: TypedName VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: variableDeclaratorIdWithDims :: TypedTerm VariableDeclaratorId -> TypedTerm (Maybe Dims) -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: variableDeclaratorIdWithIdentifier :: TypedTerm VariableDeclaratorId -> TypedTerm Identifier -> TypedTerm VariableDeclaratorId
+ Hydra.Java.Dsl.Syntax: variableDeclaratorInitializer :: TypedTerm VariableDeclarator -> TypedTerm (Maybe VariableInitializer)
+ Hydra.Java.Dsl.Syntax: variableDeclaratorVariableDeclarator :: TypedName VariableDeclarator
+ Hydra.Java.Dsl.Syntax: variableDeclaratorWithId :: TypedTerm VariableDeclarator -> TypedTerm VariableDeclaratorId -> TypedTerm VariableDeclarator
+ Hydra.Java.Dsl.Syntax: variableDeclaratorWithInitializer :: TypedTerm VariableDeclarator -> TypedTerm (Maybe VariableInitializer) -> TypedTerm VariableDeclarator
+ Hydra.Java.Dsl.Syntax: variableInitializerArrayInitializer :: TypedTerm ArrayInitializer -> TypedTerm VariableInitializer
+ Hydra.Java.Dsl.Syntax: variableInitializerExpression :: TypedTerm Expression -> TypedTerm VariableInitializer
+ Hydra.Java.Dsl.Syntax: variableInitializerVariableInitializer :: TypedName VariableInitializer
+ Hydra.Java.Dsl.Syntax: variableModifierAnnotation :: TypedTerm Annotation -> TypedTerm VariableModifier
+ Hydra.Java.Dsl.Syntax: variableModifierFinal :: TypedTerm VariableModifier
+ Hydra.Java.Dsl.Syntax: variableModifierVariableModifier :: TypedName VariableModifier
+ Hydra.Java.Dsl.Syntax: whileStatement :: TypedTerm (Maybe Expression) -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Java.Dsl.Syntax: whileStatementBody :: TypedTerm WhileStatement -> TypedTerm Statement
+ Hydra.Java.Dsl.Syntax: whileStatementCond :: TypedTerm WhileStatement -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIf :: TypedTerm (Maybe Expression) -> TypedTerm StatementNoShortIf -> TypedTerm WhileStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIfBody :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIfCond :: TypedTerm WhileStatementNoShortIf -> TypedTerm (Maybe Expression)
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIfWhileStatementNoShortIf :: TypedName WhileStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIfWithBody :: TypedTerm WhileStatementNoShortIf -> TypedTerm StatementNoShortIf -> TypedTerm WhileStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: whileStatementNoShortIfWithCond :: TypedTerm WhileStatementNoShortIf -> TypedTerm (Maybe Expression) -> TypedTerm WhileStatementNoShortIf
+ Hydra.Java.Dsl.Syntax: whileStatementWhileStatement :: TypedName WhileStatement
+ Hydra.Java.Dsl.Syntax: whileStatementWithBody :: TypedTerm WhileStatement -> TypedTerm Statement -> TypedTerm WhileStatement
+ Hydra.Java.Dsl.Syntax: whileStatementWithCond :: TypedTerm WhileStatement -> TypedTerm (Maybe Expression) -> TypedTerm WhileStatement
+ Hydra.Java.Dsl.Syntax: wildcard :: TypedTerm [Annotation] -> TypedTerm (Maybe WildcardBounds) -> TypedTerm Wildcard
+ Hydra.Java.Dsl.Syntax: wildcardAnnotations :: TypedTerm Wildcard -> TypedTerm [Annotation]
+ Hydra.Java.Dsl.Syntax: wildcardBoundsExtends :: TypedTerm ReferenceType -> TypedTerm WildcardBounds
+ Hydra.Java.Dsl.Syntax: wildcardBoundsSuper :: TypedTerm ReferenceType -> TypedTerm WildcardBounds
+ Hydra.Java.Dsl.Syntax: wildcardBoundsWildcardBounds :: TypedName WildcardBounds
+ Hydra.Java.Dsl.Syntax: wildcardWildcard :: TypedName Wildcard
+ Hydra.Java.Dsl.Syntax: wildcardWildcard2 :: TypedTerm Wildcard -> TypedTerm (Maybe WildcardBounds)
+ Hydra.Java.Dsl.Syntax: wildcardWithAnnotations :: TypedTerm Wildcard -> TypedTerm [Annotation] -> TypedTerm Wildcard
+ Hydra.Java.Dsl.Syntax: wildcardWithWildcard :: TypedTerm Wildcard -> TypedTerm (Maybe WildcardBounds) -> TypedTerm Wildcard
+ Hydra.Java.Dsl.Syntax: yieldStatement :: TypedTerm Expression -> TypedTerm YieldStatement
+ Hydra.Java.Dsl.Syntax: yieldStatementYieldStatement :: TypedName YieldStatement
+ Hydra.Java.Environment: instance GHC.Internal.Read.Read Hydra.Java.Environment.Aliases
+ Hydra.Java.Environment: instance GHC.Internal.Read.Read Hydra.Java.Environment.JavaFeatures
+ Hydra.Java.Environment: instance GHC.Internal.Read.Read Hydra.Java.Environment.JavaSymbolClass
+ Hydra.Java.Environment: instance GHC.Internal.Show.Show Hydra.Java.Environment.Aliases
+ Hydra.Java.Environment: instance GHC.Internal.Show.Show Hydra.Java.Environment.JavaFeatures
+ Hydra.Java.Environment: instance GHC.Internal.Show.Show Hydra.Java.Environment.JavaSymbolClass
+ Hydra.Java.Gradle: AntlrConfig :: [String] -> FilePath -> AntlrConfig
+ Hydra.Java.Gradle: GradleBuildConfiguration :: [PackageDependency] -> [String] -> [FilePath] -> [String] -> Maybe AntlrConfig -> GradleBuildConfiguration
+ Hydra.Java.Gradle: [antlrConfigArguments] :: AntlrConfig -> [String]
+ Hydra.Java.Gradle: [antlrConfigOutputDirectory] :: AntlrConfig -> FilePath
+ Hydra.Java.Gradle: [gradleBuildConfigurationAntlr] :: GradleBuildConfiguration -> Maybe AntlrConfig
+ Hydra.Java.Gradle: [gradleBuildConfigurationDependencies] :: GradleBuildConfiguration -> [PackageDependency]
+ Hydra.Java.Gradle: [gradleBuildConfigurationExcludes] :: GradleBuildConfiguration -> [String]
+ Hydra.Java.Gradle: [gradleBuildConfigurationExtraSourceDirs] :: GradleBuildConfiguration -> [FilePath]
+ Hydra.Java.Gradle: [gradleBuildConfigurationPlugins] :: GradleBuildConfiguration -> [String]
+ Hydra.Java.Gradle: _AntlrConfig :: Name
+ Hydra.Java.Gradle: _AntlrConfig_arguments :: Name
+ Hydra.Java.Gradle: _AntlrConfig_outputDirectory :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration_antlr :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration_dependencies :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration_excludes :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration_extraSourceDirs :: Name
+ Hydra.Java.Gradle: _GradleBuildConfiguration_plugins :: Name
+ Hydra.Java.Gradle: data AntlrConfig
+ Hydra.Java.Gradle: data GradleBuildConfiguration
+ Hydra.Java.Gradle: instance GHC.Classes.Eq Hydra.Java.Gradle.AntlrConfig
+ Hydra.Java.Gradle: instance GHC.Classes.Eq Hydra.Java.Gradle.GradleBuildConfiguration
+ Hydra.Java.Gradle: instance GHC.Classes.Ord Hydra.Java.Gradle.AntlrConfig
+ Hydra.Java.Gradle: instance GHC.Classes.Ord Hydra.Java.Gradle.GradleBuildConfiguration
+ Hydra.Java.Gradle: instance GHC.Internal.Read.Read Hydra.Java.Gradle.AntlrConfig
+ Hydra.Java.Gradle: instance GHC.Internal.Read.Read Hydra.Java.Gradle.GradleBuildConfiguration
+ Hydra.Java.Gradle: instance GHC.Internal.Show.Show Hydra.Java.Gradle.AntlrConfig
+ Hydra.Java.Gradle: instance GHC.Internal.Show.Show Hydra.Java.Gradle.GradleBuildConfiguration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AdditionalBound
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AdditiveExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AdditiveExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AmbiguousName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AndExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotatedIdentifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Annotation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotationInterfaceBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotationInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotationInterfaceElementDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotationInterfaceElementModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayAccess_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ArrayType_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AssertStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AssertStatement_Pair
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Assignment
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AssignmentExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.AssignmentOperator
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.BasicForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.BasicForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Block
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.BlockStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.BooleanArray
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.BreakStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CaseConstant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CasePattern
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CastExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CastExpression_Lambda
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CastExpression_NotPlusMinus
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CastExpression_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CastExpression_RefAndBounds
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CatchClause
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CatchFormalParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CatchType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Catches
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassBodyDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassBodyDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassInstanceCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassInstanceCreationExpression_Qualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassOrInterfaceType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ClassTypeQualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CompactConstructorDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.CompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConditionalAndExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConditionalExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConditionalExpression_TernaryCond
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConditionalExpression_TernaryLambda
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConditionalOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstantDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstantExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstantModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstructorBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstructorDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstructorDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ConstructorModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ContinueStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.DefaultValue
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.DimExpr
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Dims
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.DoStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ElementValue
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ElementValueArrayInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ElementValuePair
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnhancedForCond
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnhancedForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnhancedForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnumBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnumBody_Element
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnumConstant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnumConstantModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EnumDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EqualityExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.EqualityExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExceptionType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExclusiveOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExplicitConstructorInvocation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExplicitConstructorInvocation_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Expression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExpressionName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ExpressionStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FieldAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FieldAccess_Qualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FieldDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FieldModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Finally
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FloatingPointLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FloatingPointType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ForCond
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ForInit
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ForUpdate
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FormalParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.FormalParameter_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Guard
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Identifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.IfThenElseStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.IfThenElseStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.IfThenStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InclusiveOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InstanceInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InstanceofExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InstanceofExpression_Rhs
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.IntegerLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.IntegralType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceMemberDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceMethodDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceMethodModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.InterfaceType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LabeledStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LabeledStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaParameterType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaParameter_Normal
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LambdaParameters
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LeftHandSide
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Literal
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LocalClassOrInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LocalVariableDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LocalVariableDeclarationStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.LocalVariableType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MarkerAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodHeader
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodInvocation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodInvocation_Complex
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodInvocation_Header
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodInvocation_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_Array
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_Expression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_New
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_Primary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_ReferenceType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MethodReference_Super
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModularCompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleDirective
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleDirective_ExportsOrOpens
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleDirective_Provides
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleDirective_Requires
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ModuleName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MultiplicativeExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.MultiplicativeExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.NormalAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.NormalClassDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.NormalInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.NumericType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.NumericTypeArray
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.OrdinaryCompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PackageDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PackageModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PackageName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PackageOrTypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Pattern
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PostDecrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PostIncrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PostfixExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PreDecrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PreIncrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Primary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PrimaryNoNewArrayExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PrimitiveType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.PrimitiveTypeWithAnnotations
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ReceiverParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordBody
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordBodyDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordComponent
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordComponentModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordComponent_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordHeader
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RecordPattern
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ReferenceType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RelationalExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RelationalExpression_GreaterThan
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RelationalExpression_GreaterThanEqual
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RelationalExpression_LessThan
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RelationalExpression_LessThanEqual
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.RequiresModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Resource
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ResourceSpecification
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Resource_Local
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Result
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ReturnStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ShiftExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ShiftExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SimpleTypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SingleElementAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SingleStaticImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SingleTypeImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Statement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StatementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StatementWithoutTrailingSubstatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StaticImportOnDemandDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StaticInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.StringLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchBlock
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchBlockStatementGroup
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchBlock_Legacy
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchLabel
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchRule
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchRule_Body
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SwitchStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.SynchronizedStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TextBlock
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.ThrowStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Throws
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TryStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TryStatement_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TryStatement_WithFinally
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TryWithResourcesStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Type
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeArgument
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeArgumentsOrDiamond
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeBound
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeBound_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeIdentifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeImportOnDemandDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeNameArray
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeParameterModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypePattern
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.TypeVariable
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.UnannClassType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.UnannType
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.UnaryExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.UnaryExpressionNotPlusMinus
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableArityParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableArityRecordComponent
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableDeclaratorId
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.VariableModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.WhileStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.WhileStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.Wildcard
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.WildcardBounds
+ Hydra.Java.Syntax: instance GHC.Internal.Read.Read Hydra.Java.Syntax.YieldStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AdditionalBound
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AdditiveExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AdditiveExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AmbiguousName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AndExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotatedIdentifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Annotation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotationInterfaceBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotationInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotationInterfaceElementDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotationInterfaceElementModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AnnotationInterfaceMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayAccess_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithInitializer_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayCreationExpressionWithoutInitializer_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ArrayType_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AssertStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AssertStatement_Pair
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Assignment
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AssignmentExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.AssignmentOperator
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.BasicForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.BasicForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Block
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.BlockStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.BooleanArray
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.BreakStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CaseConstant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CasePattern
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CastExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CastExpression_Lambda
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CastExpression_NotPlusMinus
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CastExpression_Primitive
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CastExpression_RefAndBounds
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CatchClause
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CatchFormalParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CatchType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Catches
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassBodyDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassBodyDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassInstanceCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassInstanceCreationExpression_Qualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassOrInterfaceType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassOrInterfaceTypeToInstantiate
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ClassTypeQualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CompactConstructorDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.CompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConditionalAndExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConditionalExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConditionalExpression_TernaryCond
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConditionalExpression_TernaryLambda
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConditionalOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstantDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstantExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstantModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstructorBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstructorDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstructorDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ConstructorModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ContinueStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.DefaultValue
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.DimExpr
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Dims
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.DoStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ElementValue
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ElementValueArrayInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ElementValuePair
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnhancedForCond
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnhancedForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnhancedForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnumBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnumBody_Element
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnumConstant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnumConstantModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EnumDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EqualityExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.EqualityExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExceptionType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExclusiveOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExplicitConstructorInvocation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExplicitConstructorInvocation_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Expression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExpressionName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ExpressionStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FieldAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FieldAccess_Qualifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FieldDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FieldModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Finally
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FloatingPointLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FloatingPointType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ForCond
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ForInit
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ForStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ForStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ForUpdate
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FormalParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.FormalParameter_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Guard
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Identifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.IfThenElseStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.IfThenElseStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.IfThenStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InclusiveOrExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InstanceInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InstanceofExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InstanceofExpression_Rhs
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.IntegerLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.IntegralType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceMemberDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceMemberDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceMethodDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceMethodModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.InterfaceType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LabeledStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LabeledStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaParameterType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaParameter_Normal
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LambdaParameters
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LeftHandSide
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Literal
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LocalClassOrInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LocalVariableDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LocalVariableDeclarationStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.LocalVariableType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MarkerAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodHeader
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodInvocation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodInvocation_Complex
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodInvocation_Header
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodInvocation_Variant
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_Array
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_Expression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_New
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_Primary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_ReferenceType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MethodReference_Super
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModularCompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleDirective
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleDirective_ExportsOrOpens
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleDirective_Provides
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleDirective_Requires
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ModuleName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MultiplicativeExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.MultiplicativeExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.NormalAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.NormalClassDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.NormalInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.NumericType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.NumericTypeArray
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.OrdinaryCompilationUnit
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PackageDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PackageModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PackageName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PackageOrTypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Pattern
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PostDecrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PostIncrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PostfixExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PreDecrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PreIncrementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Primary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PrimaryNoNewArrayExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PrimitiveType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.PrimitiveTypeWithAnnotations
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ReceiverParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordBody
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordBodyDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordComponent
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordComponentModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordComponent_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordHeader
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RecordPattern
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ReferenceType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RelationalExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RelationalExpression_GreaterThan
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RelationalExpression_GreaterThanEqual
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RelationalExpression_LessThan
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RelationalExpression_LessThanEqual
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.RequiresModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Resource
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ResourceSpecification
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Resource_Local
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Result
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ReturnStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ShiftExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ShiftExpression_Binary
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SimpleTypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SingleElementAnnotation
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SingleStaticImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SingleTypeImportDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Statement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StatementExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StatementWithoutTrailingSubstatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StaticImportOnDemandDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StaticInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.StringLiteral
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchBlock
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchBlockStatementGroup
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchBlock_Legacy
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchLabel
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchRule
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchRule_Body
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SwitchStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.SynchronizedStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TextBlock
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.ThrowStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Throws
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TopLevelClassOrInterfaceDeclarationWithComments
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TryStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TryStatement_Simple
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TryStatement_WithFinally
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TryWithResourcesStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Type
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeArgument
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeArgumentsOrDiamond
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeBound
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeBound_ClassOrInterface
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeIdentifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeImportOnDemandDeclaration
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeName
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeNameArray
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeParameterModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypePattern
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.TypeVariable
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.UnannClassType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.UnannType
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.UnaryExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.UnaryExpressionNotPlusMinus
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.UnqualifiedClassInstanceCreationExpression
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableAccess
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableArityParameter
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableArityRecordComponent
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableDeclarator
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableDeclaratorId
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableInitializer
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.VariableModifier
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.WhileStatement
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.WhileStatementNoShortIf
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.Wildcard
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.WildcardBounds
+ Hydra.Java.Syntax: instance GHC.Internal.Show.Show Hydra.Java.Syntax.YieldStatement

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-java.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hydra-java-version:        0.17.7+version:        0.18.0 synopsis:       Hydra's Java coder: emit Java 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". Java support for Hydra category:       Data@@ -27,12 +27,12 @@  library   exposed-modules:-      Hydra.Dsl.Java.Environment-      Hydra.Dsl.Java.Language-      Hydra.Dsl.Java.Syntax-      Hydra.Gradle       Hydra.Java.Coder+      Hydra.Java.Dsl.Environment+      Hydra.Java.Dsl.Language+      Hydra.Java.Dsl.Syntax       Hydra.Java.Environment+      Hydra.Java.Gradle       Hydra.Java.Language       Hydra.Java.Names       Hydra.Java.Serde@@ -46,7 +46,7 @@   build-depends:       base >=4.19.0 && <4.22     , containers >=0.6.7 && <0.8-    , hydra-jvm ==0.17.7-    , hydra-kernel ==0.17.7+    , hydra-jvm ==0.18.0+    , hydra-kernel ==0.18.0     , scientific >=0.3.7 && <0.4   default-language: Haskell2010
− src/main/haskell/Hydra/Dsl/Java/Environment.hs
@@ -1,1559 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.java.environment--module Hydra.Dsl.Java.Environment where--import qualified Hydra.Core as Core-import qualified Hydra.Dsl.Java.Syntax as JavaSyntax-import qualified Hydra.Graph as Graph-import qualified Hydra.Java.Environment as Environment-import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Map as M-import qualified Data.Set as S---- | DSL constructor for hydra.java.environment.Aliases-aliases :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (M.Map Core.Name Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (M.Map Core.Name Core.Name) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm (Maybe Core.Type) -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliases currentNamespace packages branchVars recursiveVars inScopeTypeParams polymorphicLocals inScopeJavaVars varRenames lambdaVars typeVarSubst trustedTypeVars methodCodomain thunkedVars =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Typed.unTypedTerm currentNamespace)},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Typed.unTypedTerm packages)},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Typed.unTypedTerm branchVars)},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Typed.unTypedTerm recursiveVars)},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Typed.unTypedTerm inScopeTypeParams)},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Typed.unTypedTerm polymorphicLocals)},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Typed.unTypedTerm inScopeJavaVars)},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Typed.unTypedTerm varRenames)},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Typed.unTypedTerm lambdaVars)},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Typed.unTypedTerm typeVarSubst)},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Typed.unTypedTerm trustedTypeVars)},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Typed.unTypedTerm methodCodomain)},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Typed.unTypedTerm thunkedVars)}]}))---- | DSL name token for hydra.java.environment.Aliases-aliasesAliases :: Typed.TypedName Environment.Aliases-aliasesAliases = Typed.TypedName (Core.Name "hydra.java.environment.Aliases")---- | DSL accessor for the branchVars field of hydra.java.environment.Aliases-aliasesBranchVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesBranchVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "branchVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the currentNamespace field of hydra.java.environment.Aliases-aliasesCurrentNamespace :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Packaging.ModuleName-aliasesCurrentNamespace x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "currentNamespace")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the inScopeJavaVars field of hydra.java.environment.Aliases-aliasesInScopeJavaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesInScopeJavaVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the inScopeTypeParams field of hydra.java.environment.Aliases-aliasesInScopeTypeParams :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesInScopeTypeParams x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the lambdaVars field of hydra.java.environment.Aliases-aliasesLambdaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesLambdaVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "lambdaVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the methodCodomain field of hydra.java.environment.Aliases-aliasesMethodCodomain :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (Maybe Core.Type)-aliasesMethodCodomain x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "methodCodomain")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the packages field of hydra.java.environment.Aliases-aliasesPackages :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName)-aliasesPackages x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "packages")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the polymorphicLocals field of hydra.java.environment.Aliases-aliasesPolymorphicLocals :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesPolymorphicLocals x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the recursiveVars field of hydra.java.environment.Aliases-aliasesRecursiveVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesRecursiveVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "recursiveVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the thunkedVars field of hydra.java.environment.Aliases-aliasesThunkedVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesThunkedVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "thunkedVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the trustedTypeVars field of hydra.java.environment.Aliases-aliasesTrustedTypeVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name)-aliasesTrustedTypeVars x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeVarSubst field of hydra.java.environment.Aliases-aliasesTypeVarSubst :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Core.Name Core.Name)-aliasesTypeVarSubst x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "typeVarSubst")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the varRenames field of hydra.java.environment.Aliases-aliasesVarRenames :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Core.Name Core.Name)-aliasesVarRenames x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-        Core.projectionFieldName = (Core.Name "varRenames")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the branchVars field of hydra.java.environment.Aliases-aliasesWithBranchVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithBranchVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the currentNamespace field of hydra.java.environment.Aliases-aliasesWithCurrentNamespace :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Environment.Aliases-aliasesWithCurrentNamespace original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the inScopeJavaVars field of hydra.java.environment.Aliases-aliasesWithInScopeJavaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithInScopeJavaVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the inScopeTypeParams field of hydra.java.environment.Aliases-aliasesWithInScopeTypeParams :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithInScopeTypeParams original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the lambdaVars field of hydra.java.environment.Aliases-aliasesWithLambdaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithLambdaVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the methodCodomain field of hydra.java.environment.Aliases-aliasesWithMethodCodomain :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (Maybe Core.Type) -> Typed.TypedTerm Environment.Aliases-aliasesWithMethodCodomain original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the packages field of hydra.java.environment.Aliases-aliasesWithPackages :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName) -> Typed.TypedTerm Environment.Aliases-aliasesWithPackages original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the polymorphicLocals field of hydra.java.environment.Aliases-aliasesWithPolymorphicLocals :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithPolymorphicLocals original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the recursiveVars field of hydra.java.environment.Aliases-aliasesWithRecursiveVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithRecursiveVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the thunkedVars field of hydra.java.environment.Aliases-aliasesWithThunkedVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithThunkedVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the trustedTypeVars field of hydra.java.environment.Aliases-aliasesWithTrustedTypeVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithTrustedTypeVars original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeVarSubst field of hydra.java.environment.Aliases-aliasesWithTypeVarSubst :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Core.Name Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithTypeVarSubst original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "varRenames")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the varRenames field of hydra.java.environment.Aliases-aliasesWithVarRenames :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Core.Name Core.Name) -> Typed.TypedTerm Environment.Aliases-aliasesWithVarRenames original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.Aliases"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "currentNamespace"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "currentNamespace")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "packages"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "packages")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "branchVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "branchVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "recursiveVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "recursiveVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeTypeParams"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeTypeParams")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "polymorphicLocals"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "polymorphicLocals")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "inScopeJavaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "inScopeJavaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "varRenames"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "lambdaVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "lambdaVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeVarSubst"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "typeVarSubst")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trustedTypeVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "trustedTypeVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "methodCodomain"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "methodCodomain")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "thunkedVars"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.Aliases"),-              Core.projectionFieldName = (Core.Name "thunkedVars")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.environment.JavaEnvironment-javaEnvironment :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.JavaEnvironment-javaEnvironment aliases graph =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "aliases"),-          Core.fieldTerm = (Typed.unTypedTerm aliases)},-        Core.Field {-          Core.fieldName = (Core.Name "graph"),-          Core.fieldTerm = (Typed.unTypedTerm graph)}]}))---- | DSL accessor for the aliases field of hydra.java.environment.JavaEnvironment-javaEnvironmentAliases :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Environment.Aliases-javaEnvironmentAliases x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-        Core.projectionFieldName = (Core.Name "aliases")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the graph field of hydra.java.environment.JavaEnvironment-javaEnvironmentGraph :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Graph.Graph-javaEnvironmentGraph x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-        Core.projectionFieldName = (Core.Name "graph")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.environment.JavaEnvironment-javaEnvironmentJavaEnvironment :: Typed.TypedName Environment.JavaEnvironment-javaEnvironmentJavaEnvironment = Typed.TypedName (Core.Name "hydra.java.environment.JavaEnvironment")---- | DSL updater for the aliases field of hydra.java.environment.JavaEnvironment-javaEnvironmentWithAliases :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Environment.JavaEnvironment-javaEnvironmentWithAliases original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "aliases"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "graph"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-              Core.projectionFieldName = (Core.Name "graph")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the graph field of hydra.java.environment.JavaEnvironment-javaEnvironmentWithGraph :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.JavaEnvironment-javaEnvironmentWithGraph original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "aliases"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.environment.JavaEnvironment"),-              Core.projectionFieldName = (Core.Name "aliases")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "graph"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.environment.JavaFeatures-javaFeatures :: Typed.TypedTerm Bool -> Typed.TypedTerm Environment.JavaFeatures-javaFeatures supportsDiamondOperator =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.JavaFeatures"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "supportsDiamondOperator"),-          Core.fieldTerm = (Typed.unTypedTerm supportsDiamondOperator)}]}))---- | DSL name token for hydra.java.environment.JavaFeatures-javaFeaturesJavaFeatures :: Typed.TypedName Environment.JavaFeatures-javaFeaturesJavaFeatures = Typed.TypedName (Core.Name "hydra.java.environment.JavaFeatures")---- | DSL accessor for the supportsDiamondOperator field of hydra.java.environment.JavaFeatures-javaFeaturesSupportsDiamondOperator :: Typed.TypedTerm Environment.JavaFeatures -> Typed.TypedTerm Bool-javaFeaturesSupportsDiamondOperator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.environment.JavaFeatures"),-        Core.projectionFieldName = (Core.Name "supportsDiamondOperator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the supportsDiamondOperator field of hydra.java.environment.JavaFeatures-javaFeaturesWithSupportsDiamondOperator :: Typed.TypedTerm Environment.JavaFeatures -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.JavaFeatures-javaFeaturesWithSupportsDiamondOperator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.environment.JavaFeatures"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "supportsDiamondOperator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the constant variant of hydra.java.environment.JavaSymbolClass-javaSymbolClassConstant :: Typed.TypedTerm Environment.JavaSymbolClass-javaSymbolClassConstant =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.environment.JavaSymbolClass"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constant"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the hoistedLambda variant of hydra.java.environment.JavaSymbolClass-javaSymbolClassHoistedLambda :: Typed.TypedTerm Int -> Typed.TypedTerm Environment.JavaSymbolClass-javaSymbolClassHoistedLambda x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.environment.JavaSymbolClass"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "hoistedLambda"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.environment.JavaSymbolClass-javaSymbolClassJavaSymbolClass :: Typed.TypedName Environment.JavaSymbolClass-javaSymbolClassJavaSymbolClass = Typed.TypedName (Core.Name "hydra.java.environment.JavaSymbolClass")---- | DSL injection for the localVariable variant of hydra.java.environment.JavaSymbolClass-javaSymbolClassLocalVariable :: Typed.TypedTerm Environment.JavaSymbolClass-javaSymbolClassLocalVariable =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.environment.JavaSymbolClass"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "localVariable"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nullaryFunction variant of hydra.java.environment.JavaSymbolClass-javaSymbolClassNullaryFunction :: Typed.TypedTerm Environment.JavaSymbolClass-javaSymbolClassNullaryFunction =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.environment.JavaSymbolClass"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "nullaryFunction"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the unaryFunction variant of hydra.java.environment.JavaSymbolClass-javaSymbolClassUnaryFunction :: Typed.TypedTerm Environment.JavaSymbolClass-javaSymbolClassUnaryFunction =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.environment.JavaSymbolClass"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unaryFunction"),-        Core.fieldTerm = Core.TermUnit}}))
− src/main/haskell/Hydra/Dsl/Java/Language.hs
@@ -1,47 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.java.language--module Hydra.Dsl.Java.Language where--import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Graph as Graph-import qualified Hydra.Java.Language as Language-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Set as S---- | DSL reference to hydra.java.language.javaLanguage-javaLanguage :: Typed.TypedTerm Coders.Language-javaLanguage = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.java.language.javaLanguage"))---- | DSL reference to hydra.java.language.javaMaxTupleLength-javaMaxTupleLength :: Typed.TypedTerm Int-javaMaxTupleLength = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.java.language.javaMaxTupleLength"))---- | DSL reference to hydra.java.language.reservedWords-reservedWords :: Typed.TypedTerm (S.Set String)-reservedWords = Typed.TypedTerm (Core.TermVariable (Core.Name "hydra.java.language.reservedWords"))
− src/main/haskell/Hydra/Dsl/Java/Syntax.hs
@@ -1,16885 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | DSL functions for hydra.java.syntax--module Hydra.Dsl.Java.Syntax where--import qualified Hydra.Core as Core-import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Typed as Typed-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | DSL constructor for the hydra.java.syntax.AdditionalBound wrapper-additionalBound :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.AdditionalBound-additionalBound x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.AdditionalBound"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.AdditionalBound-additionalBoundAdditionalBound :: Typed.TypedName Syntax.AdditionalBound-additionalBoundAdditionalBound = Typed.TypedName (Core.Name "hydra.java.syntax.AdditionalBound")---- | DSL name token for hydra.java.syntax.AdditiveExpression-additiveExpressionAdditiveExpression :: Typed.TypedName Syntax.AdditiveExpression-additiveExpressionAdditiveExpression = Typed.TypedName (Core.Name "hydra.java.syntax.AdditiveExpression")---- | DSL injection for the minus variant of hydra.java.syntax.AdditiveExpression-additiveExpressionMinus :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression-additiveExpressionMinus x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "minus"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the plus variant of hydra.java.syntax.AdditiveExpression-additiveExpressionPlus :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression-additiveExpressionPlus x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "plus"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unary variant of hydra.java.syntax.AdditiveExpression-additiveExpressionUnary :: Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression-additiveExpressionUnary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_Binary :: Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary-additiveExpression_Binary lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL name token for hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_BinaryAdditiveExpression_Binary :: Typed.TypedName Syntax.AdditiveExpression_Binary-additiveExpression_BinaryAdditiveExpression_Binary =-    Typed.TypedName (Core.Name "hydra.java.syntax.AdditiveExpression_Binary")---- | DSL accessor for the lhs field of hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_BinaryLhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression-additiveExpression_BinaryLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_BinaryRhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression-additiveExpression_BinaryRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary-additiveExpression_BinaryWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.AdditiveExpression_Binary-additiveExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary-additiveExpression_BinaryWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AdditiveExpression_Binary"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.AmbiguousName wrapper-ambiguousName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.AmbiguousName-ambiguousName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.AmbiguousName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.AmbiguousName-ambiguousNameAmbiguousName :: Typed.TypedName Syntax.AmbiguousName-ambiguousNameAmbiguousName = Typed.TypedName (Core.Name "hydra.java.syntax.AmbiguousName")---- | DSL constructor for the hydra.java.syntax.AndExpression wrapper-andExpression :: Typed.TypedTerm [Syntax.EqualityExpression] -> Typed.TypedTerm Syntax.AndExpression-andExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.AndExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.AndExpression-andExpressionAndExpression :: Typed.TypedName Syntax.AndExpression-andExpressionAndExpression = Typed.TypedName (Core.Name "hydra.java.syntax.AndExpression")---- | DSL constructor for hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifier :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotatedIdentifier-annotatedIdentifier annotations identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL name token for hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifierAnnotatedIdentifier :: Typed.TypedName Syntax.AnnotatedIdentifier-annotatedIdentifierAnnotatedIdentifier = Typed.TypedName (Core.Name "hydra.java.syntax.AnnotatedIdentifier")---- | DSL accessor for the annotations field of hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifierAnnotations :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm [Syntax.Annotation]-annotatedIdentifierAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifierIdentifier :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm Syntax.Identifier-annotatedIdentifierIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifierWithAnnotations :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.AnnotatedIdentifier-annotatedIdentifierWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.AnnotatedIdentifier-annotatedIdentifierWithIdentifier :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotatedIdentifier-annotatedIdentifierWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotatedIdentifier"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.Annotation-annotationAnnotation :: Typed.TypedName Syntax.Annotation-annotationAnnotation = Typed.TypedName (Core.Name "hydra.java.syntax.Annotation")---- | DSL constructor for the hydra.java.syntax.AnnotationInterfaceBody wrapper-annotationInterfaceBody :: Typed.TypedTerm [Syntax.AnnotationInterfaceMemberDeclaration] -> Typed.TypedTerm Syntax.AnnotationInterfaceBody-annotationInterfaceBody x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceBody"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.AnnotationInterfaceBody-annotationInterfaceBodyAnnotationInterfaceBody :: Typed.TypedName Syntax.AnnotationInterfaceBody-annotationInterfaceBodyAnnotationInterfaceBody = Typed.TypedName (Core.Name "hydra.java.syntax.AnnotationInterfaceBody")---- | DSL constructor for hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclaration :: Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclaration modifiers identifier body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL name token for hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationAnnotationInterfaceDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationAnnotationInterfaceDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration")---- | DSL accessor for the body field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationBody :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceBody-annotationInterfaceDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier-annotationInterfaceDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier]-annotationInterfaceDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithBody :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration-annotationInterfaceDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.AnnotationInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclaration :: Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclaration modifiers type_ identifier dims default_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Typed.unTypedTerm default_)}]}))---- | DSL name token for hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration")---- | DSL accessor for the default field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationDefault :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.DefaultValue)-annotationInterfaceElementDeclarationDefault x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-        Core.projectionFieldName = (Core.Name "default")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the dims field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationDims :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.Dims)-annotationInterfaceElementDeclarationDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.Identifier-annotationInterfaceElementDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier]-annotationInterfaceElementDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationType :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.UnannType-annotationInterfaceElementDeclarationType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the default field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithDefault :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithDefault original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "default"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the dims field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithDims :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "dims")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier] -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "dims")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithType :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration-annotationInterfaceElementDeclarationWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "dims")})),-            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.java.syntax.AnnotationInterfaceElementDeclaration"),-              Core.projectionFieldName = (Core.Name "default")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the abstract variant of hydra.java.syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAbstract :: Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAbstract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "abstract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotation variant of hydra.java.syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAnnotationInterfaceElementModifier :: Typed.TypedName Syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierAnnotationInterfaceElementModifier =-    Typed.TypedName (Core.Name "hydra.java.syntax.AnnotationInterfaceElementModifier")---- | DSL injection for the public variant of hydra.java.syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierPublic :: Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier-annotationInterfaceElementModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotationInterface variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationAnnotationInterface :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationAnnotationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotationInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration")---- | DSL injection for the class variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the constant variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationConstant :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationConstant x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constant"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration-annotationInterfaceMemberDeclarationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the marker variant of hydra.java.syntax.Annotation-annotationMarker :: Typed.TypedTerm Syntax.MarkerAnnotation -> Typed.TypedTerm Syntax.Annotation-annotationMarker x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Annotation"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "marker"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the normal variant of hydra.java.syntax.Annotation-annotationNormal :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.Annotation-annotationNormal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Annotation"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the singleElement variant of hydra.java.syntax.Annotation-annotationSingleElement :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.Annotation-annotationSingleElement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Annotation"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "singleElement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ArrayAccess-arrayAccess :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ArrayAccess_Variant -> Typed.TypedTerm Syntax.ArrayAccess-arrayAccess expression variant =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm variant)}]}))---- | DSL name token for hydra.java.syntax.ArrayAccess-arrayAccessArrayAccess :: Typed.TypedName Syntax.ArrayAccess-arrayAccessArrayAccess = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayAccess")---- | DSL accessor for the expression field of hydra.java.syntax.ArrayAccess-arrayAccessExpression :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm (Maybe Syntax.Expression)-arrayAccessExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variant field of hydra.java.syntax.ArrayAccess-arrayAccessVariant :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.ArrayAccess_Variant-arrayAccessVariant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-        Core.projectionFieldName = (Core.Name "variant")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.ArrayAccess-arrayAccessWithExpression :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ArrayAccess-arrayAccessWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variant field of hydra.java.syntax.ArrayAccess-arrayAccessWithVariant :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.ArrayAccess_Variant -> Typed.TypedTerm Syntax.ArrayAccess-arrayAccessWithVariant original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayAccess"),-      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.java.syntax.ArrayAccess"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.ArrayAccess_Variant-arrayAccess_VariantArrayAccess_Variant :: Typed.TypedName Syntax.ArrayAccess_Variant-arrayAccess_VariantArrayAccess_Variant = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayAccess_Variant")---- | DSL injection for the arrayCreationWithInitializer variant of hydra.java.syntax.ArrayAccess_Variant-arrayAccess_VariantArrayCreationWithInitializer :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer -> Typed.TypedTerm Syntax.ArrayAccess_Variant-arrayAccess_VariantArrayCreationWithInitializer x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrayCreationWithInitializer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the name variant of hydra.java.syntax.ArrayAccess_Variant-arrayAccess_VariantName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.ArrayAccess_Variant-arrayAccess_VariantName x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "name"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primary variant of hydra.java.syntax.ArrayAccess_Variant-arrayAccess_VariantPrimary :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression -> Typed.TypedTerm Syntax.ArrayAccess_Variant-arrayAccess_VariantPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayAccess_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpression-arrayCreationExpressionArrayCreationExpression :: Typed.TypedName Syntax.ArrayCreationExpression-arrayCreationExpressionArrayCreationExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpression")---- | DSL injection for the noInit variant of hydra.java.syntax.ArrayCreationExpression-arrayCreationExpressionNoInit :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpression-arrayCreationExpressionNoInit x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "noInit"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the withInit variant of hydra.java.syntax.ArrayCreationExpression-arrayCreationExpressionWithInit :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpression-arrayCreationExpressionWithInit x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "withInit"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer")---- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerClassOrInterface :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primitive variant of hydra.java.syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerPrimitive :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer-arrayCreationExpressionWithInitializerPrimitive x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primitive"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterface type_ dims array =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Typed.unTypedTerm array)}]}))---- | DSL accessor for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayInitializer-arrayCreationExpressionWithInitializer_ClassOrInterfaceArray x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "array")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface")---- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.Dims]-arrayCreationExpressionWithInitializer_ClassOrInterfaceDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType-arrayCreationExpressionWithInitializer_ClassOrInterfaceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "array")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface-arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "array")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_Primitive type_ dims array =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Typed.unTypedTerm array)}]}))---- | DSL accessor for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayInitializer-arrayCreationExpressionWithInitializer_PrimitiveArray x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "array")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive")---- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm [Syntax.Dims]-arrayCreationExpressionWithInitializer_PrimitiveDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-arrayCreationExpressionWithInitializer_PrimitiveType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithArray original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "array")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive-arrayCreationExpressionWithInitializer_PrimitiveWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "array"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "array")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer")---- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerClassOrInterface :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primitive variant of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerPrimitive :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer-arrayCreationExpressionWithoutInitializerPrimitive x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primitive"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterface type_ dimExprs dims =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Typed.unTypedTerm dimExprs)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)}]}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface")---- | DSL accessor for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.DimExpr]-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "dimExprs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm (Maybe Syntax.Dims)-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dimExprs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface-arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dimExprs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_Primitive type_ dimExprs dims =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Typed.unTypedTerm dimExprs)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)}]}))---- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive =-    Typed.TypedName (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive")---- | DSL accessor for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm [Syntax.DimExpr]-arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "dimExprs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm (Maybe Syntax.Dims)-arrayCreationExpressionWithoutInitializer_PrimitiveDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-arrayCreationExpressionWithoutInitializer_PrimitiveType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dimExprs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive-arrayCreationExpressionWithoutInitializer_PrimitiveWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dimExprs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dimExprs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.ArrayInitializer wrapper-arrayInitializer :: Typed.TypedTerm [[Syntax.VariableInitializer]] -> Typed.TypedTerm Syntax.ArrayInitializer-arrayInitializer x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ArrayInitializer"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ArrayInitializer-arrayInitializerArrayInitializer :: Typed.TypedName Syntax.ArrayInitializer-arrayInitializerArrayInitializer = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayInitializer")---- | DSL constructor for hydra.java.syntax.ArrayType-arrayType :: Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm Syntax.ArrayType_Variant -> Typed.TypedTerm Syntax.ArrayType-arrayType dims variant =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm variant)}]}))---- | DSL name token for hydra.java.syntax.ArrayType-arrayTypeArrayType :: Typed.TypedName Syntax.ArrayType-arrayTypeArrayType = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayType")---- | DSL accessor for the dims field of hydra.java.syntax.ArrayType-arrayTypeDims :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.Dims-arrayTypeDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variant field of hydra.java.syntax.ArrayType-arrayTypeVariant :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ArrayType_Variant-arrayTypeVariant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-        Core.projectionFieldName = (Core.Name "variant")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the dims field of hydra.java.syntax.ArrayType-arrayTypeWithDims :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm Syntax.ArrayType-arrayTypeWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variant field of hydra.java.syntax.ArrayType-arrayTypeWithVariant :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ArrayType_Variant -> Typed.TypedTerm Syntax.ArrayType-arrayTypeWithVariant original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ArrayType"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.ArrayType_Variant-arrayType_VariantArrayType_Variant :: Typed.TypedName Syntax.ArrayType_Variant-arrayType_VariantArrayType_Variant = Typed.TypedName (Core.Name "hydra.java.syntax.ArrayType_Variant")---- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayType_Variant-arrayType_VariantClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayType_Variant-arrayType_VariantClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayType_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primitive variant of hydra.java.syntax.ArrayType_Variant-arrayType_VariantPrimitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayType_Variant-arrayType_VariantPrimitive x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayType_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primitive"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variable variant of hydra.java.syntax.ArrayType_Variant-arrayType_VariantVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ArrayType_Variant-arrayType_VariantVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ArrayType_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.AssertStatement-assertStatementAssertStatement :: Typed.TypedName Syntax.AssertStatement-assertStatementAssertStatement = Typed.TypedName (Core.Name "hydra.java.syntax.AssertStatement")---- | DSL injection for the pair variant of hydra.java.syntax.AssertStatement-assertStatementPair :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.AssertStatement-assertStatementPair x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "pair"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the single variant of hydra.java.syntax.AssertStatement-assertStatementSingle :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement-assertStatementSingle x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "single"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.AssertStatement_Pair-assertStatement_Pair :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair-assertStatement_Pair first second =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "first"),-          Core.fieldTerm = (Typed.unTypedTerm first)},-        Core.Field {-          Core.fieldName = (Core.Name "second"),-          Core.fieldTerm = (Typed.unTypedTerm second)}]}))---- | DSL name token for hydra.java.syntax.AssertStatement_Pair-assertStatement_PairAssertStatement_Pair :: Typed.TypedName Syntax.AssertStatement_Pair-assertStatement_PairAssertStatement_Pair = Typed.TypedName (Core.Name "hydra.java.syntax.AssertStatement_Pair")---- | DSL accessor for the first field of hydra.java.syntax.AssertStatement_Pair-assertStatement_PairFirst :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression-assertStatement_PairFirst x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-        Core.projectionFieldName = (Core.Name "first")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the second field of hydra.java.syntax.AssertStatement_Pair-assertStatement_PairSecond :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression-assertStatement_PairSecond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-        Core.projectionFieldName = (Core.Name "second")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the first field of hydra.java.syntax.AssertStatement_Pair-assertStatement_PairWithFirst :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair-assertStatement_PairWithFirst original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "first"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "second"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-              Core.projectionFieldName = (Core.Name "second")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the second field of hydra.java.syntax.AssertStatement_Pair-assertStatement_PairWithSecond :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair-assertStatement_PairWithSecond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "first"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.AssertStatement_Pair"),-              Core.projectionFieldName = (Core.Name "first")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "second"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.Assignment-assignment :: Typed.TypedTerm Syntax.LeftHandSide -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Assignment-assignment lhs op expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Assignment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "op"),-          Core.fieldTerm = (Typed.unTypedTerm op)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL name token for hydra.java.syntax.Assignment-assignmentAssignment :: Typed.TypedName Syntax.Assignment-assignmentAssignment = Typed.TypedName (Core.Name "hydra.java.syntax.Assignment")---- | DSL accessor for the expression field of hydra.java.syntax.Assignment-assignmentExpression :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Expression-assignmentExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the assignment variant of hydra.java.syntax.AssignmentExpression-assignmentExpressionAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionAssignment x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assignment"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.AssignmentExpression-assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression-assignmentExpressionAssignmentExpression = Typed.TypedName (Core.Name "hydra.java.syntax.AssignmentExpression")---- | DSL injection for the conditional variant of hydra.java.syntax.AssignmentExpression-assignmentExpressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.AssignmentExpression-assignmentExpressionConditional x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "conditional"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL accessor for the lhs field of hydra.java.syntax.Assignment-assignmentLhs :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.LeftHandSide-assignmentLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the op field of hydra.java.syntax.Assignment-assignmentOp :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentOperator-assignmentOp x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-        Core.projectionFieldName = (Core.Name "op")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the and variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorAnd :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorAnd =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "and"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.AssignmentOperator-assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator-assignmentOperatorAssignmentOperator = Typed.TypedName (Core.Name "hydra.java.syntax.AssignmentOperator")---- | DSL injection for the div variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorDiv :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorDiv =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "div"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the minus variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorMinus :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorMinus =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "minus"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the mod variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorMod :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorMod =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "mod"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the or variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorOr :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorOr =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "or"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the plus variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorPlus :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorPlus =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "plus"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the shiftLeft variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorShiftLeft :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorShiftLeft =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftLeft"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the shiftRight variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorShiftRight :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorShiftRight =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftRight"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the shiftRightZeroFill variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorShiftRightZeroFill :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorShiftRightZeroFill =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftRightZeroFill"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the simple variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorSimple :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorSimple =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the times variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorTimes :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorTimes =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "times"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the xor variant of hydra.java.syntax.AssignmentOperator-assignmentOperatorXor :: Typed.TypedTerm Syntax.AssignmentOperator-assignmentOperatorXor =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.AssignmentOperator"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "xor"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL updater for the expression field of hydra.java.syntax.Assignment-assignmentWithExpression :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Assignment-assignmentWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Assignment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "op"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "op")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the lhs field of hydra.java.syntax.Assignment-assignmentWithLhs :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.LeftHandSide -> Typed.TypedTerm Syntax.Assignment-assignmentWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Assignment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "op"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "op")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the op field of hydra.java.syntax.Assignment-assignmentWithOp :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Assignment-assignmentWithOp original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Assignment"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "op"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Assignment"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.BasicForStatement-basicForStatement :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BasicForStatement-basicForStatement cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL name token for hydra.java.syntax.BasicForStatement-basicForStatementBasicForStatement :: Typed.TypedName Syntax.BasicForStatement-basicForStatementBasicForStatement = Typed.TypedName (Core.Name "hydra.java.syntax.BasicForStatement")---- | DSL accessor for the body field of hydra.java.syntax.BasicForStatement-basicForStatementBody :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.Statement-basicForStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.BasicForStatement-basicForStatementCond :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForCond-basicForStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIf :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf-basicForStatementNoShortIf cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL name token for hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfBasicForStatementNoShortIf :: Typed.TypedName Syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfBasicForStatementNoShortIf =-    Typed.TypedName (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf")---- | DSL accessor for the body field of hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfBody :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-basicForStatementNoShortIfBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfCond :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForCond-basicForStatementNoShortIfCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf-basicForStatementNoShortIfWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.java.syntax.BasicForStatement-basicForStatementWithBody :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BasicForStatement-basicForStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.BasicForStatement-basicForStatementWithCond :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.BasicForStatement-basicForStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.BasicForStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.Block wrapper-block :: Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.Block-block x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Block"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Block-blockBlock :: Typed.TypedName Syntax.Block-blockBlock = Typed.TypedName (Core.Name "hydra.java.syntax.Block")---- | DSL name token for hydra.java.syntax.BlockStatement-blockStatementBlockStatement :: Typed.TypedName Syntax.BlockStatement-blockStatementBlockStatement = Typed.TypedName (Core.Name "hydra.java.syntax.BlockStatement")---- | DSL injection for the localClassOrInterface variant of hydra.java.syntax.BlockStatement-blockStatementLocalClassOrInterface :: Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration -> Typed.TypedTerm Syntax.BlockStatement-blockStatementLocalClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.BlockStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "localClassOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the localVariableDeclaration variant of hydra.java.syntax.BlockStatement-blockStatementLocalVariableDeclaration :: Typed.TypedTerm Syntax.LocalVariableDeclarationStatement -> Typed.TypedTerm Syntax.BlockStatement-blockStatementLocalVariableDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.BlockStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "localVariableDeclaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the statement variant of hydra.java.syntax.BlockStatement-blockStatementStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BlockStatement-blockStatementStatement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.BlockStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "statement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the array variant of hydra.java.syntax.BooleanArray-booleanArrayArray :: Typed.TypedTerm Syntax.BooleanArray -> Typed.TypedTerm Syntax.BooleanArray-booleanArrayArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.BooleanArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.BooleanArray-booleanArrayBooleanArray :: Typed.TypedName Syntax.BooleanArray-booleanArrayBooleanArray = Typed.TypedName (Core.Name "hydra.java.syntax.BooleanArray")---- | DSL injection for the simple variant of hydra.java.syntax.BooleanArray-booleanArraySimple :: Typed.TypedTerm Syntax.BooleanArray-booleanArraySimple =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.BooleanArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.BreakStatement wrapper-breakStatement :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.BreakStatement-breakStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.BreakStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.BreakStatement-breakStatementBreakStatement :: Typed.TypedName Syntax.BreakStatement-breakStatementBreakStatement = Typed.TypedName (Core.Name "hydra.java.syntax.BreakStatement")---- | DSL constructor for the hydra.java.syntax.CaseConstant wrapper-caseConstant :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.CaseConstant-caseConstant x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.CaseConstant"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.CaseConstant-caseConstantCaseConstant :: Typed.TypedName Syntax.CaseConstant-caseConstantCaseConstant = Typed.TypedName (Core.Name "hydra.java.syntax.CaseConstant")---- | DSL constructor for hydra.java.syntax.CasePattern-casePattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CasePattern-casePattern pattern guard =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm pattern)},-        Core.Field {-          Core.fieldName = (Core.Name "guard"),-          Core.fieldTerm = (Typed.unTypedTerm guard)}]}))---- | DSL name token for hydra.java.syntax.CasePattern-casePatternCasePattern :: Typed.TypedName Syntax.CasePattern-casePatternCasePattern = Typed.TypedName (Core.Name "hydra.java.syntax.CasePattern")---- | DSL accessor for the guard field of hydra.java.syntax.CasePattern-casePatternGuard :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm (Maybe Syntax.Guard)-casePatternGuard x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-        Core.projectionFieldName = (Core.Name "guard")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the pattern field of hydra.java.syntax.CasePattern-casePatternPattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.Pattern-casePatternPattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-        Core.projectionFieldName = (Core.Name "pattern")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the guard field of hydra.java.syntax.CasePattern-casePatternWithGuard :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CasePattern-casePatternWithGuard original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-      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.java.syntax.CasePattern"),-              Core.projectionFieldName = (Core.Name "pattern")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "guard"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the pattern field of hydra.java.syntax.CasePattern-casePatternWithPattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.CasePattern-casePatternWithPattern original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "pattern"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "guard"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CasePattern"),-              Core.projectionFieldName = (Core.Name "guard")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.CastExpression-castExpressionCastExpression :: Typed.TypedName Syntax.CastExpression-castExpressionCastExpression = Typed.TypedName (Core.Name "hydra.java.syntax.CastExpression")---- | DSL injection for the lambda variant of hydra.java.syntax.CastExpression-castExpressionLambda :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression-castExpressionLambda x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.CastExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lambda"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the notPlusMinus variant of hydra.java.syntax.CastExpression-castExpressionNotPlusMinus :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression-castExpressionNotPlusMinus x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.CastExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "notPlusMinus"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primitive variant of hydra.java.syntax.CastExpression-castExpressionPrimitive :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.CastExpression-castExpressionPrimitive x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.CastExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primitive"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.CastExpression_Lambda-castExpression_Lambda :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.CastExpression_Lambda-castExpression_Lambda refAndBounds expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Typed.unTypedTerm refAndBounds)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL name token for hydra.java.syntax.CastExpression_Lambda-castExpression_LambdaCastExpression_Lambda :: Typed.TypedName Syntax.CastExpression_Lambda-castExpression_LambdaCastExpression_Lambda = Typed.TypedName (Core.Name "hydra.java.syntax.CastExpression_Lambda")---- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_Lambda-castExpression_LambdaExpression :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.LambdaExpression-castExpression_LambdaExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the refAndBounds field of hydra.java.syntax.CastExpression_Lambda-castExpression_LambdaRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds-castExpression_LambdaRefAndBounds x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-        Core.projectionFieldName = (Core.Name "refAndBounds")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.CastExpression_Lambda-castExpression_LambdaWithExpression :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.CastExpression_Lambda-castExpression_LambdaWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-              Core.projectionFieldName = (Core.Name "refAndBounds")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the refAndBounds field of hydra.java.syntax.CastExpression_Lambda-castExpression_LambdaWithRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.CastExpression_Lambda-castExpression_LambdaWithRefAndBounds original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Lambda"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinus :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinus refAndBounds expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Typed.unTypedTerm refAndBounds)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL name token for hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusCastExpression_NotPlusMinus :: Typed.TypedName Syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusCastExpression_NotPlusMinus =-    Typed.TypedName (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus")---- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusExpression :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression-castExpression_NotPlusMinusExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the refAndBounds field of hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds-castExpression_NotPlusMinusRefAndBounds x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-        Core.projectionFieldName = (Core.Name "refAndBounds")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusWithExpression :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-              Core.projectionFieldName = (Core.Name "refAndBounds")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the refAndBounds field of hydra.java.syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusWithRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus-castExpression_NotPlusMinusWithRefAndBounds original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "refAndBounds"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CastExpression_Primitive-castExpression_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_Primitive-castExpression_Primitive type_ expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL name token for hydra.java.syntax.CastExpression_Primitive-castExpression_PrimitiveCastExpression_Primitive :: Typed.TypedName Syntax.CastExpression_Primitive-castExpression_PrimitiveCastExpression_Primitive =-    Typed.TypedName (Core.Name "hydra.java.syntax.CastExpression_Primitive")---- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_Primitive-castExpression_PrimitiveExpression :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.UnaryExpression-castExpression_PrimitiveExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.CastExpression_Primitive-castExpression_PrimitiveType :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-castExpression_PrimitiveType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.CastExpression_Primitive-castExpression_PrimitiveWithExpression :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_Primitive-castExpression_PrimitiveWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.CastExpression_Primitive-castExpression_PrimitiveWithType :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.CastExpression_Primitive-castExpression_PrimitiveWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_Primitive"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBounds :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds-castExpression_RefAndBounds type_ bounds =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "bounds"),-          Core.fieldTerm = (Typed.unTypedTerm bounds)}]}))---- | DSL accessor for the bounds field of hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsBounds :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm [Syntax.AdditionalBound]-castExpression_RefAndBoundsBounds x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-        Core.projectionFieldName = (Core.Name "bounds")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsCastExpression_RefAndBounds :: Typed.TypedName Syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsCastExpression_RefAndBounds =-    Typed.TypedName (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds")---- | DSL accessor for the type field of hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsType :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.ReferenceType-castExpression_RefAndBoundsType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the bounds field of hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsWithBounds :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsWithBounds original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "bounds"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsWithType :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds-castExpression_RefAndBoundsWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "bounds"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"),-              Core.projectionFieldName = (Core.Name "bounds")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CatchClause-catchClause :: Typed.TypedTerm (Maybe Syntax.CatchFormalParameter) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CatchClause-catchClause parameter block =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameter"),-          Core.fieldTerm = (Typed.unTypedTerm parameter)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)}]}))---- | DSL accessor for the block field of hydra.java.syntax.CatchClause-catchClauseBlock :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.Block-catchClauseBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.CatchClause-catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause-catchClauseCatchClause = Typed.TypedName (Core.Name "hydra.java.syntax.CatchClause")---- | DSL accessor for the parameter field of hydra.java.syntax.CatchClause-catchClauseParameter :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.CatchFormalParameter)-catchClauseParameter x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-        Core.projectionFieldName = (Core.Name "parameter")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the block field of hydra.java.syntax.CatchClause-catchClauseWithBlock :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-              Core.projectionFieldName = (Core.Name "parameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the parameter field of hydra.java.syntax.CatchClause-catchClauseWithParameter :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.CatchFormalParameter) -> Typed.TypedTerm Syntax.CatchClause-catchClauseWithParameter original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameter"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchClause"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CatchFormalParameter-catchFormalParameter :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.CatchFormalParameter-catchFormalParameter modifiers type_ id =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)}]}))---- | DSL name token for hydra.java.syntax.CatchFormalParameter-catchFormalParameterCatchFormalParameter :: Typed.TypedName Syntax.CatchFormalParameter-catchFormalParameterCatchFormalParameter = Typed.TypedName (Core.Name "hydra.java.syntax.CatchFormalParameter")---- | DSL accessor for the id field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterId :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.VariableDeclaratorId-catchFormalParameterId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterModifiers :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm [Syntax.VariableModifier]-catchFormalParameterModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterType :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.CatchType-catchFormalParameterType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the id field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterWithId :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.CatchFormalParameter-catchFormalParameterWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterWithModifiers :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.CatchFormalParameter-catchFormalParameterWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.CatchFormalParameter-catchFormalParameterWithType :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.CatchFormalParameter-catchFormalParameterWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchFormalParameter"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CatchType-catchType :: Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm [Syntax.ClassType] -> Typed.TypedTerm Syntax.CatchType-catchType type_ types =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm types)}]}))---- | DSL name token for hydra.java.syntax.CatchType-catchTypeCatchType :: Typed.TypedName Syntax.CatchType-catchTypeCatchType = Typed.TypedName (Core.Name "hydra.java.syntax.CatchType")---- | DSL accessor for the type field of hydra.java.syntax.CatchType-catchTypeType :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.UnannClassType-catchTypeType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchType"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the types field of hydra.java.syntax.CatchType-catchTypeTypes :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm [Syntax.ClassType]-catchTypeTypes x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchType"),-        Core.projectionFieldName = (Core.Name "types")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the type field of hydra.java.syntax.CatchType-catchTypeWithType :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm Syntax.CatchType-catchTypeWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchType"),-              Core.projectionFieldName = (Core.Name "types")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the types field of hydra.java.syntax.CatchType-catchTypeWithTypes :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm [Syntax.ClassType] -> Typed.TypedTerm Syntax.CatchType-catchTypeWithTypes original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CatchType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CatchType"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.Catches wrapper-catches :: Typed.TypedTerm [Syntax.CatchClause] -> Typed.TypedTerm Syntax.Catches-catches x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Catches"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Catches-catchesCatches :: Typed.TypedName Syntax.Catches-catchesCatches = Typed.TypedName (Core.Name "hydra.java.syntax.Catches")---- | DSL constructor for the hydra.java.syntax.ClassBody wrapper-classBody :: Typed.TypedTerm [Syntax.ClassBodyDeclarationWithComments] -> Typed.TypedTerm Syntax.ClassBody-classBody x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ClassBody"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ClassBody-classBodyClassBody :: Typed.TypedName Syntax.ClassBody-classBodyClassBody = Typed.TypedName (Core.Name "hydra.java.syntax.ClassBody")---- | DSL name token for hydra.java.syntax.ClassBodyDeclaration-classBodyDeclarationClassBodyDeclaration :: Typed.TypedName Syntax.ClassBodyDeclaration-classBodyDeclarationClassBodyDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ClassBodyDeclaration")---- | DSL injection for the classMember variant of hydra.java.syntax.ClassBodyDeclaration-classBodyDeclarationClassMember :: Typed.TypedTerm Syntax.ClassMemberDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclaration-classBodyDeclarationClassMember x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classMember"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the constructorDeclaration variant of hydra.java.syntax.ClassBodyDeclaration-classBodyDeclarationConstructorDeclaration :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclaration-classBodyDeclarationConstructorDeclaration x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constructorDeclaration"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the instanceInitializer variant of hydra.java.syntax.ClassBodyDeclaration-classBodyDeclarationInstanceInitializer :: Typed.TypedTerm Syntax.InstanceInitializer -> Typed.TypedTerm Syntax.ClassBodyDeclaration-classBodyDeclarationInstanceInitializer x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "instanceInitializer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the staticInitializer variant of hydra.java.syntax.ClassBodyDeclaration-classBodyDeclarationStaticInitializer :: Typed.TypedTerm Syntax.StaticInitializer -> Typed.TypedTerm Syntax.ClassBodyDeclaration-classBodyDeclarationStaticInitializer x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "staticInitializer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithComments :: Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithComments value comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL name token for hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsClassBodyDeclarationWithComments :: Typed.TypedName Syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsClassBodyDeclarationWithComments =-    Typed.TypedName (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments")---- | DSL accessor for the comments field of hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm (Maybe String)-classBodyDeclarationWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the value field of hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm Syntax.ClassBodyDeclaration-classBodyDeclarationWithCommentsValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),-      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.java.syntax.ClassBodyDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.java.syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments-classBodyDeclarationWithCommentsWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          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.java.syntax.ClassBodyDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.ClassDeclaration-classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration-classDeclarationClassDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ClassDeclaration")---- | DSL injection for the enum variant of hydra.java.syntax.ClassDeclaration-classDeclarationEnum :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationEnum x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "enum"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the normal variant of hydra.java.syntax.ClassDeclaration-classDeclarationNormal :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationNormal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the record variant of hydra.java.syntax.ClassDeclaration-classDeclarationRecord :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration-classDeclarationRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "record"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpression :: Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression-classInstanceCreationExpression qualifier expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm qualifier)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL name token for hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionClassInstanceCreationExpression :: Typed.TypedName Syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionClassInstanceCreationExpression =-    Typed.TypedName (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression")---- | DSL accessor for the expression field of hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionExpression :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-classInstanceCreationExpressionExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualifier field of hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionQualifier :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier)-classInstanceCreationExpressionQualifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "qualifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionWithExpression :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the qualifier field of hydra.java.syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionWithQualifier :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier) -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression-classInstanceCreationExpressionWithQualifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier :: Typed.TypedName Syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier =-    Typed.TypedName (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier")---- | DSL injection for the expression variant of hydra.java.syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierExpression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primary variant of hydra.java.syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression_Qualifier-classInstanceCreationExpression_QualifierPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the boolean variant of hydra.java.syntax.ClassLiteral-classLiteralBoolean :: Typed.TypedTerm Syntax.BooleanArray -> Typed.TypedTerm Syntax.ClassLiteral-classLiteralBoolean x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "boolean"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ClassLiteral-classLiteralClassLiteral :: Typed.TypedName Syntax.ClassLiteral-classLiteralClassLiteral = Typed.TypedName (Core.Name "hydra.java.syntax.ClassLiteral")---- | DSL injection for the numericType variant of hydra.java.syntax.ClassLiteral-classLiteralNumericType :: Typed.TypedTerm Syntax.NumericTypeArray -> Typed.TypedTerm Syntax.ClassLiteral-classLiteralNumericType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "numericType"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the type variant of hydra.java.syntax.ClassLiteral-classLiteralType :: Typed.TypedTerm Syntax.TypeNameArray -> Typed.TypedTerm Syntax.ClassLiteral-classLiteralType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the void variant of hydra.java.syntax.ClassLiteral-classLiteralVoid :: Typed.TypedTerm Syntax.ClassLiteral-classLiteralVoid =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassLiteral"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "void"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the class variant of hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration-classMemberDeclarationClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationClassMemberDeclaration :: Typed.TypedName Syntax.ClassMemberDeclaration-classMemberDeclarationClassMemberDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ClassMemberDeclaration")---- | DSL injection for the field variant of hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationField :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration-classMemberDeclarationField x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "field"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration-classMemberDeclarationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the method variant of hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationMethod :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration-classMemberDeclarationMethod x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "method"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the none variant of hydra.java.syntax.ClassMemberDeclaration-classMemberDeclarationNone :: Typed.TypedTerm Syntax.ClassMemberDeclaration-classMemberDeclarationNone =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "none"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the abstract variant of hydra.java.syntax.ClassModifier-classModifierAbstract :: Typed.TypedTerm Syntax.ClassModifier-classModifierAbstract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "abstract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotation variant of hydra.java.syntax.ClassModifier-classModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ClassModifier-classModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ClassModifier-classModifierClassModifier :: Typed.TypedName Syntax.ClassModifier-classModifierClassModifier = Typed.TypedName (Core.Name "hydra.java.syntax.ClassModifier")---- | DSL injection for the final variant of hydra.java.syntax.ClassModifier-classModifierFinal :: Typed.TypedTerm Syntax.ClassModifier-classModifierFinal =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "final"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the nonSealed variant of hydra.java.syntax.ClassModifier-classModifierNonSealed :: Typed.TypedTerm Syntax.ClassModifier-classModifierNonSealed =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "nonSealed"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the private variant of hydra.java.syntax.ClassModifier-classModifierPrivate :: Typed.TypedTerm Syntax.ClassModifier-classModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the protected variant of hydra.java.syntax.ClassModifier-classModifierProtected :: Typed.TypedTerm Syntax.ClassModifier-classModifierProtected =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "protected"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.ClassModifier-classModifierPublic :: Typed.TypedTerm Syntax.ClassModifier-classModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the sealed variant of hydra.java.syntax.ClassModifier-classModifierSealed :: Typed.TypedTerm Syntax.ClassModifier-classModifierSealed =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "sealed"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.ClassModifier-classModifierStatic :: Typed.TypedTerm Syntax.ClassModifier-classModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictfp variant of hydra.java.syntax.ClassModifier-classModifierStrictfp :: Typed.TypedTerm Syntax.ClassModifier-classModifierStrictfp =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictfp"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the class variant of hydra.java.syntax.ClassOrInterfaceType-classOrInterfaceTypeClass :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassOrInterfaceType-classOrInterfaceTypeClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ClassOrInterfaceType-classOrInterfaceTypeClassOrInterfaceType :: Typed.TypedName Syntax.ClassOrInterfaceType-classOrInterfaceTypeClassOrInterfaceType = Typed.TypedName (Core.Name "hydra.java.syntax.ClassOrInterfaceType")---- | DSL injection for the interface variant of hydra.java.syntax.ClassOrInterfaceType-classOrInterfaceTypeInterface :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.ClassOrInterfaceType-classOrInterfaceTypeInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiate :: Typed.TypedTerm [Syntax.AnnotatedIdentifier] -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond) -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiate identifiers typeArguments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm identifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)}]}))---- | DSL name token for hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate :: Typed.TypedName Syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate =-    Typed.TypedName (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate")---- | DSL accessor for the identifiers field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateIdentifiers :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.AnnotatedIdentifier]-classOrInterfaceTypeToInstantiateIdentifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-        Core.projectionFieldName = (Core.Name "identifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateTypeArguments :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond)-classOrInterfaceTypeToInstantiateTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifiers field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateWithIdentifiers :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.AnnotatedIdentifier] -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateWithIdentifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateWithTypeArguments :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond) -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate-classOrInterfaceTypeToInstantiateWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),-              Core.projectionFieldName = (Core.Name "identifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.ClassType-classType :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ClassTypeQualifier -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassType-classType annotations qualifier identifier arguments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm qualifier)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.ClassType-classTypeAnnotations :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.Annotation]-classTypeAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the arguments field of hydra.java.syntax.ClassType-classTypeArguments :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument]-classTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ClassType-classTypeClassType :: Typed.TypedName Syntax.ClassType-classTypeClassType = Typed.TypedName (Core.Name "hydra.java.syntax.ClassType")---- | DSL accessor for the identifier field of hydra.java.syntax.ClassType-classTypeIdentifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.TypeIdentifier-classTypeIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualifier field of hydra.java.syntax.ClassType-classTypeQualifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassTypeQualifier-classTypeQualifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-        Core.projectionFieldName = (Core.Name "qualifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ClassTypeQualifier-classTypeQualifierClassTypeQualifier :: Typed.TypedName Syntax.ClassTypeQualifier-classTypeQualifierClassTypeQualifier = Typed.TypedName (Core.Name "hydra.java.syntax.ClassTypeQualifier")---- | DSL injection for the none variant of hydra.java.syntax.ClassTypeQualifier-classTypeQualifierNone :: Typed.TypedTerm Syntax.ClassTypeQualifier-classTypeQualifierNone =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassTypeQualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "none"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the package variant of hydra.java.syntax.ClassTypeQualifier-classTypeQualifierPackage :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm Syntax.ClassTypeQualifier-classTypeQualifierPackage x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassTypeQualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "package"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parent variant of hydra.java.syntax.ClassTypeQualifier-classTypeQualifierParent :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ClassTypeQualifier-classTypeQualifierParent x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ClassTypeQualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "parent"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL updater for the annotations field of hydra.java.syntax.ClassType-classTypeWithAnnotations :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ClassType-classTypeWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the arguments field of hydra.java.syntax.ClassType-classTypeWithArguments :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassType-classTypeWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.ClassType-classTypeWithIdentifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.ClassType-classTypeWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the qualifier field of hydra.java.syntax.ClassType-classTypeWithQualifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassTypeQualifier -> Typed.TypedTerm Syntax.ClassType-classTypeWithQualifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ClassType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.ClassType"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclaration :: Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.CompactConstructorDeclaration-compactConstructorDeclaration modifiers name body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationBody :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody-compactConstructorDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationCompactConstructorDeclaration :: Typed.TypedName Syntax.CompactConstructorDeclaration-compactConstructorDeclarationCompactConstructorDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.CompactConstructorDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationModifiers :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier]-compactConstructorDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationName :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.SimpleTypeName-compactConstructorDeclarationName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithBody :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithModifiers :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "name")})),-            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.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the name field of hydra.java.syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithName :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.CompactConstructorDeclaration-compactConstructorDeclarationWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          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.java.syntax.CompactConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.CompilationUnit-compilationUnitCompilationUnit :: Typed.TypedName Syntax.CompilationUnit-compilationUnitCompilationUnit = Typed.TypedName (Core.Name "hydra.java.syntax.CompilationUnit")---- | DSL injection for the modular variant of hydra.java.syntax.CompilationUnit-compilationUnitModular :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.CompilationUnit-compilationUnitModular x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.CompilationUnit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "modular"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ordinary variant of hydra.java.syntax.CompilationUnit-compilationUnitOrdinary :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm Syntax.CompilationUnit-compilationUnitOrdinary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.CompilationUnit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ordinary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.ConditionalAndExpression wrapper-conditionalAndExpression :: Typed.TypedTerm [Syntax.InclusiveOrExpression] -> Typed.TypedTerm Syntax.ConditionalAndExpression-conditionalAndExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ConditionalAndExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConditionalAndExpression-conditionalAndExpressionConditionalAndExpression :: Typed.TypedName Syntax.ConditionalAndExpression-conditionalAndExpressionConditionalAndExpression =-    Typed.TypedName (Core.Name "hydra.java.syntax.ConditionalAndExpression")---- | DSL name token for hydra.java.syntax.ConditionalExpression-conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression-conditionalExpressionConditionalExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ConditionalExpression")---- | DSL injection for the simple variant of hydra.java.syntax.ConditionalExpression-conditionalExpressionSimple :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ternaryCond variant of hydra.java.syntax.ConditionalExpression-conditionalExpressionTernaryCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionTernaryCond x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ternaryCond"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ternaryLambda variant of hydra.java.syntax.ConditionalExpression-conditionalExpressionTernaryLambda :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpressionTernaryLambda x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ternaryLambda"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCond :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCond cond ifTrue ifFalse =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Typed.unTypedTerm ifTrue)},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Typed.unTypedTerm ifFalse)}]}))---- | DSL accessor for the cond field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalOrExpression-conditionalExpression_TernaryCondCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondConditionalExpression_TernaryCond :: Typed.TypedName Syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondConditionalExpression_TernaryCond =-    Typed.TypedName (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond")---- | DSL accessor for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression-conditionalExpression_TernaryCondIfFalse x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-        Core.projectionFieldName = (Core.Name "ifFalse")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.Expression-conditionalExpression_TernaryCondIfTrue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-        Core.projectionFieldName = (Core.Name "ifTrue")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the cond field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "ifTrue")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "ifFalse")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithIfFalse original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "ifTrue")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond-conditionalExpression_TernaryCondWithIfTrue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),-              Core.projectionFieldName = (Core.Name "ifFalse")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambda :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambda cond ifTrue ifFalse =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Typed.unTypedTerm ifTrue)},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Typed.unTypedTerm ifFalse)}]}))---- | DSL accessor for the cond field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalOrExpression-conditionalExpression_TernaryLambdaCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda :: Typed.TypedName Syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda =-    Typed.TypedName (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda")---- | DSL accessor for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.LambdaExpression-conditionalExpression_TernaryLambdaIfFalse x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-        Core.projectionFieldName = (Core.Name "ifFalse")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.Expression-conditionalExpression_TernaryLambdaIfTrue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-        Core.projectionFieldName = (Core.Name "ifTrue")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the cond field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "ifTrue")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "ifFalse")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithIfFalse original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "ifTrue")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda-conditionalExpression_TernaryLambdaWithIfTrue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "ifTrue"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "ifFalse"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),-              Core.projectionFieldName = (Core.Name "ifFalse")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.ConditionalOrExpression wrapper-conditionalOrExpression :: Typed.TypedTerm [Syntax.ConditionalAndExpression] -> Typed.TypedTerm Syntax.ConditionalOrExpression-conditionalOrExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ConditionalOrExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConditionalOrExpression-conditionalOrExpressionConditionalOrExpression :: Typed.TypedName Syntax.ConditionalOrExpression-conditionalOrExpressionConditionalOrExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ConditionalOrExpression")---- | DSL constructor for hydra.java.syntax.ConstantDeclaration-constantDeclaration :: Typed.TypedTerm [Syntax.ConstantModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.ConstantDeclaration-constantDeclaration modifiers type_ variables =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "variables"),-          Core.fieldTerm = (Typed.unTypedTerm variables)}]}))---- | DSL name token for hydra.java.syntax.ConstantDeclaration-constantDeclarationConstantDeclaration :: Typed.TypedName Syntax.ConstantDeclaration-constantDeclarationConstantDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ConstantDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.ConstantDeclaration-constantDeclarationModifiers :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.ConstantModifier]-constantDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.ConstantDeclaration-constantDeclarationType :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.UnannType-constantDeclarationType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variables field of hydra.java.syntax.ConstantDeclaration-constantDeclarationVariables :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]-constantDeclarationVariables x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-        Core.projectionFieldName = (Core.Name "variables")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the modifiers field of hydra.java.syntax.ConstantDeclaration-constantDeclarationWithModifiers :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.ConstantModifier] -> Typed.TypedTerm Syntax.ConstantDeclaration-constantDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variables"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "variables")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.ConstantDeclaration-constantDeclarationWithType :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.ConstantDeclaration-constantDeclarationWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "variables"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "variables")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variables field of hydra.java.syntax.ConstantDeclaration-constantDeclarationWithVariables :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.ConstantDeclaration-constantDeclarationWithVariables original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.ConstantDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variables"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.ConstantExpression wrapper-constantExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConstantExpression-constantExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ConstantExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConstantExpression-constantExpressionConstantExpression :: Typed.TypedName Syntax.ConstantExpression-constantExpressionConstantExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ConstantExpression")---- | DSL injection for the annotation variant of hydra.java.syntax.ConstantModifier-constantModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ConstantModifier-constantModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstantModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ConstantModifier-constantModifierConstantModifier :: Typed.TypedName Syntax.ConstantModifier-constantModifierConstantModifier = Typed.TypedName (Core.Name "hydra.java.syntax.ConstantModifier")---- | DSL injection for the final variant of hydra.java.syntax.ConstantModifier-constantModifierFinal :: Typed.TypedTerm Syntax.ConstantModifier-constantModifierFinal =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstantModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "final"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.ConstantModifier-constantModifierPublic :: Typed.TypedTerm Syntax.ConstantModifier-constantModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstantModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.ConstantModifier-constantModifierStatic :: Typed.TypedTerm Syntax.ConstantModifier-constantModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstantModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.java.syntax.ConstructorBody-constructorBody :: Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation) -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.ConstructorBody-constructorBody invocation statements =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "invocation"),-          Core.fieldTerm = (Typed.unTypedTerm invocation)},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Typed.unTypedTerm statements)}]}))---- | DSL name token for hydra.java.syntax.ConstructorBody-constructorBodyConstructorBody :: Typed.TypedName Syntax.ConstructorBody-constructorBodyConstructorBody = Typed.TypedName (Core.Name "hydra.java.syntax.ConstructorBody")---- | DSL accessor for the invocation field of hydra.java.syntax.ConstructorBody-constructorBodyInvocation :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation)-constructorBodyInvocation x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-        Core.projectionFieldName = (Core.Name "invocation")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the statements field of hydra.java.syntax.ConstructorBody-constructorBodyStatements :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm [Syntax.BlockStatement]-constructorBodyStatements x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-        Core.projectionFieldName = (Core.Name "statements")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the invocation field of hydra.java.syntax.ConstructorBody-constructorBodyWithInvocation :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation) -> Typed.TypedTerm Syntax.ConstructorBody-constructorBodyWithInvocation original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "invocation"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-              Core.projectionFieldName = (Core.Name "statements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the statements field of hydra.java.syntax.ConstructorBody-constructorBodyWithStatements :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.ConstructorBody-constructorBodyWithStatements original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "invocation"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorBody"),-              Core.projectionFieldName = (Core.Name "invocation")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.ConstructorDeclaration-constructorDeclaration :: Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.ConstructorDeclaration-constructorDeclaration modifiers constructor throws body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "constructor"),-          Core.fieldTerm = (Typed.unTypedTerm constructor)},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Typed.unTypedTerm throws)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationBody :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody-constructorDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the constructor field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationConstructor :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclarationConstructor x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "constructor")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ConstructorDeclaration-constructorDeclarationConstructorDeclaration :: Typed.TypedName Syntax.ConstructorDeclaration-constructorDeclarationConstructorDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ConstructorDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationModifiers :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier]-constructorDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the throws field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationThrows :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm (Maybe Syntax.Throws)-constructorDeclarationThrows x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-        Core.projectionFieldName = (Core.Name "throws")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationWithBody :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.ConstructorDeclaration-constructorDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructor"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "constructor")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "throws")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the constructor field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationWithConstructor :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.ConstructorDeclaration-constructorDeclarationWithConstructor original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructor"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "throws")})),-            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.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationWithModifiers :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.ConstructorDeclaration-constructorDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "constructor"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "constructor")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "throws")})),-            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.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the throws field of hydra.java.syntax.ConstructorDeclaration-constructorDeclarationWithThrows :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.ConstructorDeclaration-constructorDeclarationWithThrows original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "constructor"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "constructor")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          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.java.syntax.ConstructorDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ConstructorDeclarator-constructorDeclarator :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclarator parameters name receiverParameter formalParameters =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Typed.unTypedTerm receiverParameter)},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Typed.unTypedTerm formalParameters)}]}))---- | DSL name token for hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorConstructorDeclarator :: Typed.TypedName Syntax.ConstructorDeclarator-constructorDeclaratorConstructorDeclarator = Typed.TypedName (Core.Name "hydra.java.syntax.ConstructorDeclarator")---- | DSL accessor for the formalParameters field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorFormalParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.FormalParameter]-constructorDeclaratorFormalParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-        Core.projectionFieldName = (Core.Name "formalParameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the name field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorName :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.SimpleTypeName-constructorDeclaratorName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the parameters field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.TypeParameter]-constructorDeclaratorParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the receiverParameter field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorReceiverParameter :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter)-constructorDeclaratorReceiverParameter x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-        Core.projectionFieldName = (Core.Name "receiverParameter")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the formalParameters field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorWithFormalParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclaratorWithFormalParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "receiverParameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorWithName :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclaratorWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "receiverParameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "formalParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the parameters field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorWithParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclaratorWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "receiverParameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "formalParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the receiverParameter field of hydra.java.syntax.ConstructorDeclarator-constructorDeclaratorWithReceiverParameter :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm Syntax.ConstructorDeclarator-constructorDeclaratorWithReceiverParameter original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ConstructorDeclarator"),-              Core.projectionFieldName = (Core.Name "formalParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the annotation variant of hydra.java.syntax.ConstructorModifier-constructorModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ConstructorModifier-constructorModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstructorModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ConstructorModifier-constructorModifierConstructorModifier :: Typed.TypedName Syntax.ConstructorModifier-constructorModifierConstructorModifier = Typed.TypedName (Core.Name "hydra.java.syntax.ConstructorModifier")---- | DSL injection for the private variant of hydra.java.syntax.ConstructorModifier-constructorModifierPrivate :: Typed.TypedTerm Syntax.ConstructorModifier-constructorModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstructorModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the protected variant of hydra.java.syntax.ConstructorModifier-constructorModifierProtected :: Typed.TypedTerm Syntax.ConstructorModifier-constructorModifierProtected =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstructorModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "protected"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.ConstructorModifier-constructorModifierPublic :: Typed.TypedTerm Syntax.ConstructorModifier-constructorModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ConstructorModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.ContinueStatement wrapper-continueStatement :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ContinueStatement-continueStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ContinueStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ContinueStatement-continueStatementContinueStatement :: Typed.TypedName Syntax.ContinueStatement-continueStatementContinueStatement = Typed.TypedName (Core.Name "hydra.java.syntax.ContinueStatement")---- | DSL constructor for the hydra.java.syntax.DefaultValue wrapper-defaultValue :: Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.DefaultValue-defaultValue x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.DefaultValue"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.DefaultValue-defaultValueDefaultValue :: Typed.TypedName Syntax.DefaultValue-defaultValueDefaultValue = Typed.TypedName (Core.Name "hydra.java.syntax.DefaultValue")---- | DSL constructor for hydra.java.syntax.DimExpr-dimExpr :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DimExpr-dimExpr annotations expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.DimExpr-dimExprAnnotations :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm [Syntax.Annotation]-dimExprAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.DimExpr-dimExprDimExpr :: Typed.TypedName Syntax.DimExpr-dimExprDimExpr = Typed.TypedName (Core.Name "hydra.java.syntax.DimExpr")---- | DSL accessor for the expression field of hydra.java.syntax.DimExpr-dimExprExpression :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm (Maybe Syntax.Expression)-dimExprExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.DimExpr-dimExprWithAnnotations :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.DimExpr-dimExprWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the expression field of hydra.java.syntax.DimExpr-dimExprWithExpression :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DimExpr-dimExprWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.DimExpr"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.Dims wrapper-dims :: Typed.TypedTerm [[Syntax.Annotation]] -> Typed.TypedTerm Syntax.Dims-dims x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Dims"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Dims-dimsDims :: Typed.TypedName Syntax.Dims-dimsDims = Typed.TypedName (Core.Name "hydra.java.syntax.Dims")---- | DSL constructor for hydra.java.syntax.DoStatement-doStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoStatement-doStatement body cond =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)}]}))---- | DSL accessor for the body field of hydra.java.syntax.DoStatement-doStatementBody :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Statement-doStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.DoStatement-doStatementCond :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Expression-doStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.DoStatement-doStatementDoStatement :: Typed.TypedName Syntax.DoStatement-doStatementDoStatement = Typed.TypedName (Core.Name "hydra.java.syntax.DoStatement")---- | DSL updater for the body field of hydra.java.syntax.DoStatement-doStatementWithBody :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoStatement-doStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the cond field of hydra.java.syntax.DoStatement-doStatementWithCond :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoStatement-doStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.DoStatement"),-      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.java.syntax.DoStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the annotation variant of hydra.java.syntax.ElementValue-elementValueAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ElementValue-elementValueAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ElementValue"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.ElementValueArrayInitializer wrapper-elementValueArrayInitializer :: Typed.TypedTerm [Syntax.ElementValue] -> Typed.TypedTerm Syntax.ElementValueArrayInitializer-elementValueArrayInitializer x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ElementValueArrayInitializer"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ElementValueArrayInitializer-elementValueArrayInitializerElementValueArrayInitializer :: Typed.TypedName Syntax.ElementValueArrayInitializer-elementValueArrayInitializerElementValueArrayInitializer =-    Typed.TypedName (Core.Name "hydra.java.syntax.ElementValueArrayInitializer")---- | DSL injection for the conditionalExpression variant of hydra.java.syntax.ElementValue-elementValueConditionalExpression :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ElementValue-elementValueConditionalExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ElementValue"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "conditionalExpression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ElementValue-elementValueElementValue :: Typed.TypedName Syntax.ElementValue-elementValueElementValue = Typed.TypedName (Core.Name "hydra.java.syntax.ElementValue")---- | DSL injection for the elementValueArrayInitializer variant of hydra.java.syntax.ElementValue-elementValueElementValueArrayInitializer :: Typed.TypedTerm Syntax.ElementValueArrayInitializer -> Typed.TypedTerm Syntax.ElementValue-elementValueElementValueArrayInitializer x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ElementValue"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "elementValueArrayInitializer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ElementValuePair-elementValuePair :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.ElementValuePair-elementValuePair key value =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ElementValuePair"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "key"),-          Core.fieldTerm = (Typed.unTypedTerm key)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))---- | DSL name token for hydra.java.syntax.ElementValuePair-elementValuePairElementValuePair :: Typed.TypedName Syntax.ElementValuePair-elementValuePairElementValuePair = Typed.TypedName (Core.Name "hydra.java.syntax.ElementValuePair")---- | DSL accessor for the key field of hydra.java.syntax.ElementValuePair-elementValuePairKey :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.Identifier-elementValuePairKey x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ElementValuePair"),-        Core.projectionFieldName = (Core.Name "key")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the value field of hydra.java.syntax.ElementValuePair-elementValuePairValue :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.ElementValue-elementValuePairValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ElementValuePair"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the key field of hydra.java.syntax.ElementValuePair-elementValuePairWithKey :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ElementValuePair-elementValuePairWithKey original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ElementValuePair"),-      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.java.syntax.ElementValuePair"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the value field of hydra.java.syntax.ElementValuePair-elementValuePairWithValue :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.ElementValuePair-elementValuePairWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ElementValuePair"),-      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.java.syntax.ElementValuePair"),-              Core.projectionFieldName = (Core.Name "key")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.EnhancedForCond-enhancedForCond :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.EnhancedForCond-enhancedForCond declaration expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "declaration"),-          Core.fieldTerm = (Typed.unTypedTerm declaration)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL accessor for the declaration field of hydra.java.syntax.EnhancedForCond-enhancedForCondDeclaration :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.LocalVariableDeclaration-enhancedForCondDeclaration x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-        Core.projectionFieldName = (Core.Name "declaration")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnhancedForCond-enhancedForCondEnhancedForCond :: Typed.TypedName Syntax.EnhancedForCond-enhancedForCondEnhancedForCond = Typed.TypedName (Core.Name "hydra.java.syntax.EnhancedForCond")---- | DSL accessor for the expression field of hydra.java.syntax.EnhancedForCond-enhancedForCondExpression :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Expression-enhancedForCondExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the declaration field of hydra.java.syntax.EnhancedForCond-enhancedForCondWithDeclaration :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.EnhancedForCond-enhancedForCondWithDeclaration original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "declaration"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the expression field of hydra.java.syntax.EnhancedForCond-enhancedForCondWithExpression :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.EnhancedForCond-enhancedForCondWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "declaration"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForCond"),-              Core.projectionFieldName = (Core.Name "declaration")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.EnhancedForStatement-enhancedForStatement :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.EnhancedForStatement-enhancedForStatement cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.EnhancedForStatement-enhancedForStatementBody :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.Statement-enhancedForStatementBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.EnhancedForStatement-enhancedForStatementCond :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.EnhancedForCond-enhancedForStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnhancedForStatement-enhancedForStatementEnhancedForStatement :: Typed.TypedName Syntax.EnhancedForStatement-enhancedForStatementEnhancedForStatement = Typed.TypedName (Core.Name "hydra.java.syntax.EnhancedForStatement")---- | DSL constructor for hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIf :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIf cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfBody :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-enhancedForStatementNoShortIfBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfCond :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForCond-enhancedForStatementNoShortIfCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfEnhancedForStatementNoShortIf :: Typed.TypedName Syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfEnhancedForStatementNoShortIf =-    Typed.TypedName (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf")---- | DSL updater for the body field of hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf-enhancedForStatementNoShortIfWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.java.syntax.EnhancedForStatement-enhancedForStatementWithBody :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.EnhancedForStatement-enhancedForStatementWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.EnhancedForStatement-enhancedForStatementWithCond :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.EnhancedForStatement-enhancedForStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnhancedForStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.EnumBody wrapper-enumBody :: Typed.TypedTerm [Syntax.EnumBody_Element] -> Typed.TypedTerm Syntax.EnumBody-enumBody x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.EnumBody"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnumBody-enumBodyEnumBody :: Typed.TypedName Syntax.EnumBody-enumBodyEnumBody = Typed.TypedName (Core.Name "hydra.java.syntax.EnumBody")---- | DSL constructor for hydra.java.syntax.EnumBody_Element-enumBody_Element :: Typed.TypedTerm [Syntax.EnumConstant] -> Typed.TypedTerm [Syntax.ClassBodyDeclaration] -> Typed.TypedTerm Syntax.EnumBody_Element-enumBody_Element constants bodyDeclarations =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "constants"),-          Core.fieldTerm = (Typed.unTypedTerm constants)},-        Core.Field {-          Core.fieldName = (Core.Name "bodyDeclarations"),-          Core.fieldTerm = (Typed.unTypedTerm bodyDeclarations)}]}))---- | DSL accessor for the bodyDeclarations field of hydra.java.syntax.EnumBody_Element-enumBody_ElementBodyDeclarations :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.ClassBodyDeclaration]-enumBody_ElementBodyDeclarations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-        Core.projectionFieldName = (Core.Name "bodyDeclarations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the constants field of hydra.java.syntax.EnumBody_Element-enumBody_ElementConstants :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.EnumConstant]-enumBody_ElementConstants x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-        Core.projectionFieldName = (Core.Name "constants")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnumBody_Element-enumBody_ElementEnumBody_Element :: Typed.TypedName Syntax.EnumBody_Element-enumBody_ElementEnumBody_Element = Typed.TypedName (Core.Name "hydra.java.syntax.EnumBody_Element")---- | DSL updater for the bodyDeclarations field of hydra.java.syntax.EnumBody_Element-enumBody_ElementWithBodyDeclarations :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.ClassBodyDeclaration] -> Typed.TypedTerm Syntax.EnumBody_Element-enumBody_ElementWithBodyDeclarations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "constants"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-              Core.projectionFieldName = (Core.Name "constants")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "bodyDeclarations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the constants field of hydra.java.syntax.EnumBody_Element-enumBody_ElementWithConstants :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.EnumConstant] -> Typed.TypedTerm Syntax.EnumBody_Element-enumBody_ElementWithConstants original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "constants"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "bodyDeclarations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumBody_Element"),-              Core.projectionFieldName = (Core.Name "bodyDeclarations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.EnumConstant-enumConstant :: Typed.TypedTerm [Syntax.EnumConstantModifier] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe [Syntax.Expression]) -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.EnumConstant-enumConstant modifiers identifier arguments body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the arguments field of hydra.java.syntax.EnumConstant-enumConstantArguments :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe [Syntax.Expression])-enumConstantArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.java.syntax.EnumConstant-enumConstantBody :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe Syntax.ClassBody)-enumConstantBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnumConstant-enumConstantEnumConstant :: Typed.TypedName Syntax.EnumConstant-enumConstantEnumConstant = Typed.TypedName (Core.Name "hydra.java.syntax.EnumConstant")---- | DSL accessor for the identifier field of hydra.java.syntax.EnumConstant-enumConstantIdentifier :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm Syntax.Identifier-enumConstantIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for the hydra.java.syntax.EnumConstantModifier wrapper-enumConstantModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.EnumConstantModifier-enumConstantModifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.EnumConstantModifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnumConstantModifier-enumConstantModifierEnumConstantModifier :: Typed.TypedName Syntax.EnumConstantModifier-enumConstantModifierEnumConstantModifier = Typed.TypedName (Core.Name "hydra.java.syntax.EnumConstantModifier")---- | DSL accessor for the modifiers field of hydra.java.syntax.EnumConstant-enumConstantModifiers :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm [Syntax.EnumConstantModifier]-enumConstantModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the arguments field of hydra.java.syntax.EnumConstant-enumConstantWithArguments :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe [Syntax.Expression]) -> Typed.TypedTerm Syntax.EnumConstant-enumConstantWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.java.syntax.EnumConstant-enumConstantWithBody :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.EnumConstant-enumConstantWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.EnumConstant-enumConstantWithIdentifier :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.EnumConstant-enumConstantWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.EnumConstant-enumConstantWithModifiers :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm [Syntax.EnumConstantModifier] -> Typed.TypedTerm Syntax.EnumConstant-enumConstantWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumConstant"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.EnumDeclaration-enumDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm Syntax.EnumDeclaration-enumDeclaration modifiers identifier implements body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Typed.unTypedTerm implements)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.EnumDeclaration-enumDeclarationBody :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.EnumBody-enumDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.EnumDeclaration-enumDeclarationEnumDeclaration :: Typed.TypedName Syntax.EnumDeclaration-enumDeclarationEnumDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.EnumDeclaration")---- | DSL accessor for the identifier field of hydra.java.syntax.EnumDeclaration-enumDeclarationIdentifier :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier-enumDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the implements field of hydra.java.syntax.EnumDeclaration-enumDeclarationImplements :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]-enumDeclarationImplements x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-        Core.projectionFieldName = (Core.Name "implements")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.EnumDeclaration-enumDeclarationModifiers :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]-enumDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.EnumDeclaration-enumDeclarationWithBody :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm Syntax.EnumDeclaration-enumDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.EnumDeclaration-enumDeclarationWithIdentifier :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.EnumDeclaration-enumDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the implements field of hydra.java.syntax.EnumDeclaration-enumDeclarationWithImplements :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.EnumDeclaration-enumDeclarationWithImplements original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          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.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.EnumDeclaration-enumDeclarationWithModifiers :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.EnumDeclaration-enumDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.EnumDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the equal variant of hydra.java.syntax.EqualityExpression-equalityExpressionEqual :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression-equalityExpressionEqual x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "equal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.EqualityExpression-equalityExpressionEqualityExpression :: Typed.TypedName Syntax.EqualityExpression-equalityExpressionEqualityExpression = Typed.TypedName (Core.Name "hydra.java.syntax.EqualityExpression")---- | DSL injection for the notEqual variant of hydra.java.syntax.EqualityExpression-equalityExpressionNotEqual :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression-equalityExpressionNotEqual x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "notEqual"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unary variant of hydra.java.syntax.EqualityExpression-equalityExpressionUnary :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression-equalityExpressionUnary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.EqualityExpression_Binary-equalityExpression_Binary :: Typed.TypedTerm Syntax.EqualityExpression -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary-equalityExpression_Binary lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL name token for hydra.java.syntax.EqualityExpression_Binary-equalityExpression_BinaryEqualityExpression_Binary :: Typed.TypedName Syntax.EqualityExpression_Binary-equalityExpression_BinaryEqualityExpression_Binary =-    Typed.TypedName (Core.Name "hydra.java.syntax.EqualityExpression_Binary")---- | DSL accessor for the lhs field of hydra.java.syntax.EqualityExpression_Binary-equalityExpression_BinaryLhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression-equalityExpression_BinaryLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.java.syntax.EqualityExpression_Binary-equalityExpression_BinaryRhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.RelationalExpression-equalityExpression_BinaryRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.EqualityExpression_Binary-equalityExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary-equalityExpression_BinaryWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.EqualityExpression_Binary-equalityExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary-equalityExpression_BinaryWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.EqualityExpression_Binary"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the class variant of hydra.java.syntax.ExceptionType-exceptionTypeClass :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ExceptionType-exceptionTypeClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ExceptionType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ExceptionType-exceptionTypeExceptionType :: Typed.TypedName Syntax.ExceptionType-exceptionTypeExceptionType = Typed.TypedName (Core.Name "hydra.java.syntax.ExceptionType")---- | DSL injection for the variable variant of hydra.java.syntax.ExceptionType-exceptionTypeVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ExceptionType-exceptionTypeVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ExceptionType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.ExclusiveOrExpression wrapper-exclusiveOrExpression :: Typed.TypedTerm [Syntax.AndExpression] -> Typed.TypedTerm Syntax.ExclusiveOrExpression-exclusiveOrExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ExclusiveOrExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ExclusiveOrExpression-exclusiveOrExpressionExclusiveOrExpression :: Typed.TypedName Syntax.ExclusiveOrExpression-exclusiveOrExpressionExclusiveOrExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ExclusiveOrExpression")---- | DSL constructor for hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocation :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation-explicitConstructorInvocation typeArguments arguments variant =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm variant)}]}))---- | DSL accessor for the arguments field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.Expression]-explicitConstructorInvocationArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationExplicitConstructorInvocation :: Typed.TypedName Syntax.ExplicitConstructorInvocation-explicitConstructorInvocationExplicitConstructorInvocation =-    Typed.TypedName (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation")---- | DSL accessor for the typeArguments field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationTypeArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.TypeArgument]-explicitConstructorInvocationTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variant field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationVariant :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocationVariant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-        Core.projectionFieldName = (Core.Name "variant")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the arguments field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithTypeArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          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.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variant field of hydra.java.syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithVariant :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation-explicitConstructorInvocationWithVariant original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            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.java.syntax.ExplicitConstructorInvocation"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant :: Typed.TypedName Syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant =-    Typed.TypedName (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant")---- | DSL injection for the primary variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the super variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantSuper :: Typed.TypedTerm (Maybe Syntax.ExpressionName) -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantSuper x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "super"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the this variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantThis :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant-explicitConstructorInvocation_VariantThis =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "this"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the assignment variant of hydra.java.syntax.Expression-expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression-expressionAssignment x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assignment"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.Expression-expressionExpression :: Typed.TypedName Syntax.Expression-expressionExpression = Typed.TypedName (Core.Name "hydra.java.syntax.Expression")---- | DSL injection for the lambda variant of hydra.java.syntax.Expression-expressionLambda :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression-expressionLambda x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Expression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lambda"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ExpressionName-expressionName :: Typed.TypedTerm (Maybe Syntax.AmbiguousName) -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExpressionName-expressionName qualifier identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm qualifier)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL name token for hydra.java.syntax.ExpressionName-expressionNameExpressionName :: Typed.TypedName Syntax.ExpressionName-expressionNameExpressionName = Typed.TypedName (Core.Name "hydra.java.syntax.ExpressionName")---- | DSL accessor for the identifier field of hydra.java.syntax.ExpressionName-expressionNameIdentifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.Identifier-expressionNameIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualifier field of hydra.java.syntax.ExpressionName-expressionNameQualifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm (Maybe Syntax.AmbiguousName)-expressionNameQualifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-        Core.projectionFieldName = (Core.Name "qualifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.ExpressionName-expressionNameWithIdentifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExpressionName-expressionNameWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the qualifier field of hydra.java.syntax.ExpressionName-expressionNameWithQualifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm (Maybe Syntax.AmbiguousName) -> Typed.TypedTerm Syntax.ExpressionName-expressionNameWithQualifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ExpressionName"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.ExpressionStatement wrapper-expressionStatement :: Typed.TypedTerm Syntax.StatementExpression -> Typed.TypedTerm Syntax.ExpressionStatement-expressionStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ExpressionStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ExpressionStatement-expressionStatementExpressionStatement :: Typed.TypedName Syntax.ExpressionStatement-expressionStatementExpressionStatement = Typed.TypedName (Core.Name "hydra.java.syntax.ExpressionStatement")---- | DSL constructor for hydra.java.syntax.FieldAccess-fieldAccess :: Typed.TypedTerm Syntax.FieldAccess_Qualifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FieldAccess-fieldAccess qualifier identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm qualifier)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL name token for hydra.java.syntax.FieldAccess-fieldAccessFieldAccess :: Typed.TypedName Syntax.FieldAccess-fieldAccessFieldAccess = Typed.TypedName (Core.Name "hydra.java.syntax.FieldAccess")---- | DSL accessor for the identifier field of hydra.java.syntax.FieldAccess-fieldAccessIdentifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.Identifier-fieldAccessIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualifier field of hydra.java.syntax.FieldAccess-fieldAccessQualifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.FieldAccess_Qualifier-fieldAccessQualifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-        Core.projectionFieldName = (Core.Name "qualifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.FieldAccess-fieldAccessWithIdentifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FieldAccess-fieldAccessWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the qualifier field of hydra.java.syntax.FieldAccess-fieldAccessWithQualifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.FieldAccess_Qualifier -> Typed.TypedTerm Syntax.FieldAccess-fieldAccessWithQualifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.FieldAccess_Qualifier-fieldAccess_QualifierFieldAccess_Qualifier :: Typed.TypedName Syntax.FieldAccess_Qualifier-fieldAccess_QualifierFieldAccess_Qualifier = Typed.TypedName (Core.Name "hydra.java.syntax.FieldAccess_Qualifier")---- | DSL injection for the primary variant of hydra.java.syntax.FieldAccess_Qualifier-fieldAccess_QualifierPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.FieldAccess_Qualifier-fieldAccess_QualifierPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess_Qualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the super variant of hydra.java.syntax.FieldAccess_Qualifier-fieldAccess_QualifierSuper :: Typed.TypedTerm Syntax.FieldAccess_Qualifier-fieldAccess_QualifierSuper =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess_Qualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "super"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the typed variant of hydra.java.syntax.FieldAccess_Qualifier-fieldAccess_QualifierTyped :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.FieldAccess_Qualifier-fieldAccess_QualifierTyped x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldAccess_Qualifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typed"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.FieldDeclaration-fieldDeclaration :: Typed.TypedTerm [Syntax.FieldModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.FieldDeclaration-fieldDeclaration modifiers unannType variableDeclarators =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Typed.unTypedTerm unannType)},-        Core.Field {-          Core.fieldName = (Core.Name "variableDeclarators"),-          Core.fieldTerm = (Typed.unTypedTerm variableDeclarators)}]}))---- | DSL name token for hydra.java.syntax.FieldDeclaration-fieldDeclarationFieldDeclaration :: Typed.TypedName Syntax.FieldDeclaration-fieldDeclarationFieldDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.FieldDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.FieldDeclaration-fieldDeclarationModifiers :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.FieldModifier]-fieldDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the unannType field of hydra.java.syntax.FieldDeclaration-fieldDeclarationUnannType :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.UnannType-fieldDeclarationUnannType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-        Core.projectionFieldName = (Core.Name "unannType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variableDeclarators field of hydra.java.syntax.FieldDeclaration-fieldDeclarationVariableDeclarators :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]-fieldDeclarationVariableDeclarators x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-        Core.projectionFieldName = (Core.Name "variableDeclarators")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the modifiers field of hydra.java.syntax.FieldDeclaration-fieldDeclarationWithModifiers :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.FieldModifier] -> Typed.TypedTerm Syntax.FieldDeclaration-fieldDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "unannType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variableDeclarators"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "variableDeclarators")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the unannType field of hydra.java.syntax.FieldDeclaration-fieldDeclarationWithUnannType :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.FieldDeclaration-fieldDeclarationWithUnannType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "variableDeclarators"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "variableDeclarators")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variableDeclarators field of hydra.java.syntax.FieldDeclaration-fieldDeclarationWithVariableDeclarators :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.FieldDeclaration-fieldDeclarationWithVariableDeclarators original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FieldDeclaration"),-              Core.projectionFieldName = (Core.Name "unannType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "variableDeclarators"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the annotation variant of hydra.java.syntax.FieldModifier-fieldModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.FieldModifier-fieldModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.FieldModifier-fieldModifierFieldModifier :: Typed.TypedName Syntax.FieldModifier-fieldModifierFieldModifier = Typed.TypedName (Core.Name "hydra.java.syntax.FieldModifier")---- | DSL injection for the final variant of hydra.java.syntax.FieldModifier-fieldModifierFinal :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierFinal =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "final"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the private variant of hydra.java.syntax.FieldModifier-fieldModifierPrivate :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the protected variant of hydra.java.syntax.FieldModifier-fieldModifierProtected :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierProtected =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "protected"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.FieldModifier-fieldModifierPublic :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.FieldModifier-fieldModifierStatic :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the transient variant of hydra.java.syntax.FieldModifier-fieldModifierTransient :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierTransient =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "transient"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the volatile variant of hydra.java.syntax.FieldModifier-fieldModifierVolatile :: Typed.TypedTerm Syntax.FieldModifier-fieldModifierVolatile =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FieldModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "volatile"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.Finally wrapper-finally :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Finally-finally x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Finally"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Finally-finallyFinally :: Typed.TypedName Syntax.Finally-finallyFinally = Typed.TypedName (Core.Name "hydra.java.syntax.Finally")---- | DSL constructor for the hydra.java.syntax.FloatingPointLiteral wrapper-floatingPointLiteral :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.FloatingPointLiteral-floatingPointLiteral x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.FloatingPointLiteral"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.FloatingPointLiteral-floatingPointLiteralFloatingPointLiteral :: Typed.TypedName Syntax.FloatingPointLiteral-floatingPointLiteralFloatingPointLiteral = Typed.TypedName (Core.Name "hydra.java.syntax.FloatingPointLiteral")---- | DSL injection for the double variant of hydra.java.syntax.FloatingPointType-floatingPointTypeDouble :: Typed.TypedTerm Syntax.FloatingPointType-floatingPointTypeDouble =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FloatingPointType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "double"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the float variant of hydra.java.syntax.FloatingPointType-floatingPointTypeFloat :: Typed.TypedTerm Syntax.FloatingPointType-floatingPointTypeFloat =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FloatingPointType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "float"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.FloatingPointType-floatingPointTypeFloatingPointType :: Typed.TypedName Syntax.FloatingPointType-floatingPointTypeFloatingPointType = Typed.TypedName (Core.Name "hydra.java.syntax.FloatingPointType")---- | DSL constructor for hydra.java.syntax.ForCond-forCond :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.ForUpdate) -> Typed.TypedTerm Syntax.ForCond-forCond init cond update =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ForCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm init)},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Typed.unTypedTerm update)}]}))---- | DSL accessor for the cond field of hydra.java.syntax.ForCond-forCondCond :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.Expression)-forCondCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ForCond"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ForCond-forCondForCond :: Typed.TypedName Syntax.ForCond-forCondForCond = Typed.TypedName (Core.Name "hydra.java.syntax.ForCond")---- | DSL accessor for the init field of hydra.java.syntax.ForCond-forCondInit :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForInit)-forCondInit x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ForCond"),-        Core.projectionFieldName = (Core.Name "init")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the update field of hydra.java.syntax.ForCond-forCondUpdate :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForUpdate)-forCondUpdate x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ForCond"),-        Core.projectionFieldName = (Core.Name "update")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the cond field of hydra.java.syntax.ForCond-forCondWithCond :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForCond-forCondWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ForCond"),-      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.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          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.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "update")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the init field of hydra.java.syntax.ForCond-forCondWithInit :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForCond-forCondWithInit original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ForCond"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "init"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "cond")})),-            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.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "update")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the update field of hydra.java.syntax.ForCond-forCondWithUpdate :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForUpdate) -> Typed.TypedTerm Syntax.ForCond-forCondWithUpdate original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ForCond"),-      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.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "init")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ForCond"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "update"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.ForInit-forInitForInit :: Typed.TypedName Syntax.ForInit-forInitForInit = Typed.TypedName (Core.Name "hydra.java.syntax.ForInit")---- | DSL injection for the localVariable variant of hydra.java.syntax.ForInit-forInitLocalVariable :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.ForInit-forInitLocalVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForInit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "localVariable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the statements variant of hydra.java.syntax.ForInit-forInitStatements :: Typed.TypedTerm [Syntax.StatementExpression] -> Typed.TypedTerm Syntax.ForInit-forInitStatements x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForInit"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "statements"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the basic variant of hydra.java.syntax.ForStatement-forStatementBasic :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForStatement-forStatementBasic x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "basic"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the enhanced variant of hydra.java.syntax.ForStatement-forStatementEnhanced :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.ForStatement-forStatementEnhanced x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "enhanced"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ForStatement-forStatementForStatement :: Typed.TypedName Syntax.ForStatement-forStatementForStatement = Typed.TypedName (Core.Name "hydra.java.syntax.ForStatement")---- | DSL injection for the basic variant of hydra.java.syntax.ForStatementNoShortIf-forStatementNoShortIfBasic :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForStatementNoShortIf-forStatementNoShortIfBasic x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForStatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "basic"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the enhanced variant of hydra.java.syntax.ForStatementNoShortIf-forStatementNoShortIfEnhanced :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.ForStatementNoShortIf-forStatementNoShortIfEnhanced x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ForStatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "enhanced"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ForStatementNoShortIf-forStatementNoShortIfForStatementNoShortIf :: Typed.TypedName Syntax.ForStatementNoShortIf-forStatementNoShortIfForStatementNoShortIf = Typed.TypedName (Core.Name "hydra.java.syntax.ForStatementNoShortIf")---- | DSL constructor for the hydra.java.syntax.ForUpdate wrapper-forUpdate :: Typed.TypedTerm [Syntax.StatementExpression] -> Typed.TypedTerm Syntax.ForUpdate-forUpdate x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ForUpdate"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ForUpdate-forUpdateForUpdate :: Typed.TypedName Syntax.ForUpdate-forUpdateForUpdate = Typed.TypedName (Core.Name "hydra.java.syntax.ForUpdate")---- | DSL name token for hydra.java.syntax.FormalParameter-formalParameterFormalParameter :: Typed.TypedName Syntax.FormalParameter-formalParameterFormalParameter = Typed.TypedName (Core.Name "hydra.java.syntax.FormalParameter")---- | DSL injection for the simple variant of hydra.java.syntax.FormalParameter-formalParameterSimple :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.FormalParameter-formalParameterSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variableArity variant of hydra.java.syntax.FormalParameter-formalParameterVariableArity :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.FormalParameter-formalParameterVariableArity x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variableArity"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.FormalParameter_Simple-formalParameter_Simple :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.FormalParameter_Simple-formalParameter_Simple modifiers type_ id =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)}]}))---- | DSL name token for hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleFormalParameter_Simple :: Typed.TypedName Syntax.FormalParameter_Simple-formalParameter_SimpleFormalParameter_Simple = Typed.TypedName (Core.Name "hydra.java.syntax.FormalParameter_Simple")---- | DSL accessor for the id field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleId :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.VariableDeclaratorId-formalParameter_SimpleId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleModifiers :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm [Syntax.VariableModifier]-formalParameter_SimpleModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleType :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.UnannType-formalParameter_SimpleType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the id field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleWithId :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.FormalParameter_Simple-formalParameter_SimpleWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleWithModifiers :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.FormalParameter_Simple-formalParameter_SimpleWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.FormalParameter_Simple-formalParameter_SimpleWithType :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.FormalParameter_Simple-formalParameter_SimpleWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.FormalParameter_Simple"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.Guard wrapper-guard :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Guard-guard x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Guard"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Guard-guardGuard :: Typed.TypedName Syntax.Guard-guardGuard = Typed.TypedName (Core.Name "hydra.java.syntax.Guard")---- | DSL constructor for the hydra.java.syntax.Identifier wrapper-identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier-identifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Identifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Identifier-identifierIdentifier :: Typed.TypedName Syntax.Identifier-identifierIdentifier = Typed.TypedName (Core.Name "hydra.java.syntax.Identifier")---- | DSL constructor for hydra.java.syntax.IfThenElseStatement-ifThenElseStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenElseStatement-ifThenElseStatement cond then_ else_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm then_)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))---- | DSL accessor for the cond field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementCond :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-ifThenElseStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the else field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement-ifThenElseStatementElse x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-        Core.projectionFieldName = (Core.Name "else")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.IfThenElseStatement-ifThenElseStatementIfThenElseStatement :: Typed.TypedName Syntax.IfThenElseStatement-ifThenElseStatementIfThenElseStatement = Typed.TypedName (Core.Name "hydra.java.syntax.IfThenElseStatement")---- | DSL constructor for hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIf :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIf cond then_ else_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm then_)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm else_)}]}))---- | DSL accessor for the cond field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfCond :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression)-ifThenElseStatementNoShortIfCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the else field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-ifThenElseStatementNoShortIfElse x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "else")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf :: Typed.TypedName Syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf =-    Typed.TypedName (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf")---- | DSL accessor for the then field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfThen :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-ifThenElseStatementNoShortIfThen x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "then")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the cond field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the else field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithElse original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the then field of hydra.java.syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithThen :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf-ifThenElseStatementNoShortIfWithThen original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL accessor for the then field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementThen :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.StatementNoShortIf-ifThenElseStatementThen x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-        Core.projectionFieldName = (Core.Name "then")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the cond field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementWithCond :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.IfThenElseStatement-ifThenElseStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the else field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementWithElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenElseStatement-ifThenElseStatementWithElse original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "then")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the then field of hydra.java.syntax.IfThenElseStatement-ifThenElseStatementWithThen :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatement-ifThenElseStatementWithThen original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "then"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "else"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenElseStatement"),-              Core.projectionFieldName = (Core.Name "else")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.IfThenStatement-ifThenStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenStatement-ifThenStatement expression statement =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm statement)}]}))---- | DSL accessor for the expression field of hydra.java.syntax.IfThenStatement-ifThenStatementExpression :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Expression-ifThenStatementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.IfThenStatement-ifThenStatementIfThenStatement :: Typed.TypedName Syntax.IfThenStatement-ifThenStatementIfThenStatement = Typed.TypedName (Core.Name "hydra.java.syntax.IfThenStatement")---- | DSL accessor for the statement field of hydra.java.syntax.IfThenStatement-ifThenStatementStatement :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement-ifThenStatementStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-        Core.projectionFieldName = (Core.Name "statement")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.IfThenStatement-ifThenStatementWithExpression :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfThenStatement-ifThenStatementWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-              Core.projectionFieldName = (Core.Name "statement")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the statement field of hydra.java.syntax.IfThenStatement-ifThenStatementWithStatement :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenStatement-ifThenStatementWithStatement original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.IfThenStatement"),-      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.java.syntax.IfThenStatement"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.ImportDeclaration-importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration-importDeclarationImportDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ImportDeclaration")---- | DSL injection for the singleStaticImport variant of hydra.java.syntax.ImportDeclaration-importDeclarationSingleStaticImport :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationSingleStaticImport x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ImportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "singleStaticImport"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the singleType variant of hydra.java.syntax.ImportDeclaration-importDeclarationSingleType :: Typed.TypedTerm Syntax.SingleTypeImportDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationSingleType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ImportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "singleType"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the staticImportOnDemand variant of hydra.java.syntax.ImportDeclaration-importDeclarationStaticImportOnDemand :: Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationStaticImportOnDemand x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ImportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "staticImportOnDemand"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeImportOnDemand variant of hydra.java.syntax.ImportDeclaration-importDeclarationTypeImportOnDemand :: Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration-importDeclarationTypeImportOnDemand x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ImportDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typeImportOnDemand"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.InclusiveOrExpression wrapper-inclusiveOrExpression :: Typed.TypedTerm [Syntax.ExclusiveOrExpression] -> Typed.TypedTerm Syntax.InclusiveOrExpression-inclusiveOrExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.InclusiveOrExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InclusiveOrExpression-inclusiveOrExpressionInclusiveOrExpression :: Typed.TypedName Syntax.InclusiveOrExpression-inclusiveOrExpressionInclusiveOrExpression = Typed.TypedName (Core.Name "hydra.java.syntax.InclusiveOrExpression")---- | DSL constructor for the hydra.java.syntax.InstanceInitializer wrapper-instanceInitializer :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.InstanceInitializer-instanceInitializer x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.InstanceInitializer"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InstanceInitializer-instanceInitializerInstanceInitializer :: Typed.TypedName Syntax.InstanceInitializer-instanceInitializerInstanceInitializer = Typed.TypedName (Core.Name "hydra.java.syntax.InstanceInitializer")---- | DSL constructor for hydra.java.syntax.InstanceofExpression-instanceofExpression :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs -> Typed.TypedTerm Syntax.InstanceofExpression-instanceofExpression lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL name token for hydra.java.syntax.InstanceofExpression-instanceofExpressionInstanceofExpression :: Typed.TypedName Syntax.InstanceofExpression-instanceofExpressionInstanceofExpression = Typed.TypedName (Core.Name "hydra.java.syntax.InstanceofExpression")---- | DSL accessor for the lhs field of hydra.java.syntax.InstanceofExpression-instanceofExpressionLhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression-instanceofExpressionLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.java.syntax.InstanceofExpression-instanceofExpressionRhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs-instanceofExpressionRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.InstanceofExpression-instanceofExpressionWithLhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.InstanceofExpression-instanceofExpressionWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.InstanceofExpression-instanceofExpressionWithRhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs -> Typed.TypedTerm Syntax.InstanceofExpression-instanceofExpressionWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.InstanceofExpression_Rhs-instanceofExpression_RhsInstanceofExpression_Rhs :: Typed.TypedName Syntax.InstanceofExpression_Rhs-instanceofExpression_RhsInstanceofExpression_Rhs =-    Typed.TypedName (Core.Name "hydra.java.syntax.InstanceofExpression_Rhs")---- | DSL injection for the pattern variant of hydra.java.syntax.InstanceofExpression_Rhs-instanceofExpression_RhsPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs-instanceofExpression_RhsPattern x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression_Rhs"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "pattern"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the referenceType variant of hydra.java.syntax.InstanceofExpression_Rhs-instanceofExpression_RhsReferenceType :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs-instanceofExpression_RhsReferenceType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InstanceofExpression_Rhs"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "referenceType"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.IntegerLiteral wrapper-integerLiteral :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.IntegerLiteral-integerLiteral x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.IntegerLiteral"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.IntegerLiteral-integerLiteralIntegerLiteral :: Typed.TypedName Syntax.IntegerLiteral-integerLiteralIntegerLiteral = Typed.TypedName (Core.Name "hydra.java.syntax.IntegerLiteral")---- | DSL injection for the byte variant of hydra.java.syntax.IntegralType-integralTypeByte :: Typed.TypedTerm Syntax.IntegralType-integralTypeByte =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.IntegralType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "byte"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the char variant of hydra.java.syntax.IntegralType-integralTypeChar :: Typed.TypedTerm Syntax.IntegralType-integralTypeChar =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.IntegralType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "char"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the int variant of hydra.java.syntax.IntegralType-integralTypeInt :: Typed.TypedTerm Syntax.IntegralType-integralTypeInt =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.IntegralType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "int"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.IntegralType-integralTypeIntegralType :: Typed.TypedName Syntax.IntegralType-integralTypeIntegralType = Typed.TypedName (Core.Name "hydra.java.syntax.IntegralType")---- | DSL injection for the long variant of hydra.java.syntax.IntegralType-integralTypeLong :: Typed.TypedTerm Syntax.IntegralType-integralTypeLong =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.IntegralType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "long"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the short variant of hydra.java.syntax.IntegralType-integralTypeShort :: Typed.TypedTerm Syntax.IntegralType-integralTypeShort =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.IntegralType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "short"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.InterfaceBody wrapper-interfaceBody :: Typed.TypedTerm [Syntax.InterfaceMemberDeclarationWithComments] -> Typed.TypedTerm Syntax.InterfaceBody-interfaceBody x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.InterfaceBody"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InterfaceBody-interfaceBodyInterfaceBody :: Typed.TypedName Syntax.InterfaceBody-interfaceBodyInterfaceBody = Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceBody")---- | DSL injection for the annotationInterface variant of hydra.java.syntax.InterfaceDeclaration-interfaceDeclarationAnnotationInterface :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationAnnotationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotationInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration-interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceDeclaration")---- | DSL injection for the normalInterface variant of hydra.java.syntax.InterfaceDeclaration-interfaceDeclarationNormalInterface :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceDeclaration-interfaceDeclarationNormalInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normalInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the class variant of hydra.java.syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the constant variant of hydra.java.syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationConstant :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationConstant x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "constant"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.java.syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterfaceMemberDeclaration :: Typed.TypedName Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterfaceMemberDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceMemberDeclaration")---- | DSL injection for the interfaceMethod variant of hydra.java.syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterfaceMethod :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationInterfaceMethod x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interfaceMethod"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithComments value comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm (Maybe String)-interfaceMemberDeclarationWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments :: Typed.TypedName Syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments =-    Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments")---- | DSL accessor for the value field of hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration-interfaceMemberDeclarationWithCommentsValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),-      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.java.syntax.InterfaceMemberDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.java.syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments-interfaceMemberDeclarationWithCommentsWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          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.java.syntax.InterfaceMemberDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclaration :: Typed.TypedTerm [Syntax.InterfaceMethodModifier] -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration-interfaceMethodDeclaration modifiers header body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Typed.unTypedTerm header)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationBody :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodBody-interfaceMethodDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the header field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationHeader :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader-interfaceMethodDeclarationHeader x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-        Core.projectionFieldName = (Core.Name "header")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationInterfaceMethodDeclaration :: Typed.TypedName Syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationInterfaceMethodDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationModifiers :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm [Syntax.InterfaceMethodModifier]-interfaceMethodDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithBody :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the header field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithHeader :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithHeader original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          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.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithModifiers :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm [Syntax.InterfaceMethodModifier] -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration-interfaceMethodDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            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.java.syntax.InterfaceMethodDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the abstract variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierAbstract :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierAbstract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "abstract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotation variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the default variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierDefault :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierDefault =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "default"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierInterfaceMethodModifier :: Typed.TypedName Syntax.InterfaceMethodModifier-interfaceMethodModifierInterfaceMethodModifier = Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceMethodModifier")---- | DSL injection for the private variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierPrivate :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierPublic :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierStatic :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictfp variant of hydra.java.syntax.InterfaceMethodModifier-interfaceMethodModifierStrictfp :: Typed.TypedTerm Syntax.InterfaceMethodModifier-interfaceMethodModifierStrictfp =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceMethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictfp"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the abstract variant of hydra.java.syntax.InterfaceModifier-interfaceModifierAbstract :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierAbstract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "abstract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotation variant of hydra.java.syntax.InterfaceModifier-interfaceModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.InterfaceModifier-interfaceModifierInterfaceModifier :: Typed.TypedName Syntax.InterfaceModifier-interfaceModifierInterfaceModifier = Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceModifier")---- | DSL injection for the nonSealed variant of hydra.java.syntax.InterfaceModifier-interfaceModifierNonSealed :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierNonSealed =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "nonSealed"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the private variant of hydra.java.syntax.InterfaceModifier-interfaceModifierPrivate :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the protected variant of hydra.java.syntax.InterfaceModifier-interfaceModifierProtected :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierProtected =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "protected"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.InterfaceModifier-interfaceModifierPublic :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the sealed variant of hydra.java.syntax.InterfaceModifier-interfaceModifierSealed :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierSealed =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "sealed"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.InterfaceModifier-interfaceModifierStatic :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictfp variant of hydra.java.syntax.InterfaceModifier-interfaceModifierStrictfp :: Typed.TypedTerm Syntax.InterfaceModifier-interfaceModifierStrictfp =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.InterfaceModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictfp"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.InterfaceType wrapper-interfaceType :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.InterfaceType-interfaceType x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.InterfaceType"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.InterfaceType-interfaceTypeInterfaceType :: Typed.TypedName Syntax.InterfaceType-interfaceTypeInterfaceType = Typed.TypedName (Core.Name "hydra.java.syntax.InterfaceType")---- | DSL constructor for hydra.java.syntax.LabeledStatement-labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatement identifier statement =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm statement)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.LabeledStatement-labeledStatementIdentifier :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier-labeledStatementIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LabeledStatement-labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement-labeledStatementLabeledStatement = Typed.TypedName (Core.Name "hydra.java.syntax.LabeledStatement")---- | DSL constructor for hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIf :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf-labeledStatementNoShortIf identifier statement =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm statement)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfIdentifier :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.Identifier-labeledStatementNoShortIfIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfLabeledStatementNoShortIf :: Typed.TypedName Syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfLabeledStatementNoShortIf =-    Typed.TypedName (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf")---- | DSL accessor for the statement field of hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfStatement :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-labeledStatementNoShortIfStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "statement")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfWithIdentifier :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "statement")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the statement field of hydra.java.syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfWithStatement :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf-labeledStatementNoShortIfWithStatement original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the statement field of hydra.java.syntax.LabeledStatement-labeledStatementStatement :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-labeledStatementStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-        Core.projectionFieldName = (Core.Name "statement")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.LabeledStatement-labeledStatementWithIdentifier :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-              Core.projectionFieldName = (Core.Name "statement")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the statement field of hydra.java.syntax.LabeledStatement-labeledStatementWithStatement :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement-labeledStatementWithStatement original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LabeledStatement"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "statement"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the block variant of hydra.java.syntax.LambdaBody-lambdaBodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.LambdaBody-lambdaBodyBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.java.syntax.LambdaBody-lambdaBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaBody-lambdaBodyExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.LambdaBody-lambdaBodyLambdaBody :: Typed.TypedName Syntax.LambdaBody-lambdaBodyLambdaBody = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaBody")---- | DSL constructor for hydra.java.syntax.LambdaExpression-lambdaExpression :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.LambdaBody -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpression parameters body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.LambdaExpression-lambdaExpressionBody :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaBody-lambdaExpressionBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LambdaExpression-lambdaExpressionLambdaExpression :: Typed.TypedName Syntax.LambdaExpression-lambdaExpressionLambdaExpression = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaExpression")---- | DSL accessor for the parameters field of hydra.java.syntax.LambdaExpression-lambdaExpressionParameters :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaParameters-lambdaExpressionParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.LambdaExpression-lambdaExpressionWithBody :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaBody -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpressionWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the parameters field of hydra.java.syntax.LambdaExpression-lambdaExpressionWithParameters :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.LambdaExpression-lambdaExpressionWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          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.java.syntax.LambdaExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.LambdaParameter-lambdaParameterLambdaParameter :: Typed.TypedName Syntax.LambdaParameter-lambdaParameterLambdaParameter = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaParameter")---- | DSL injection for the normal variant of hydra.java.syntax.LambdaParameter-lambdaParameterNormal :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameter-lambdaParameterNormal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.LambdaParameterType-lambdaParameterTypeLambdaParameterType :: Typed.TypedName Syntax.LambdaParameterType-lambdaParameterTypeLambdaParameterType = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaParameterType")---- | DSL injection for the type variant of hydra.java.syntax.LambdaParameterType-lambdaParameterTypeType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.LambdaParameterType-lambdaParameterTypeType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameterType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the var variant of hydra.java.syntax.LambdaParameterType-lambdaParameterTypeVar :: Typed.TypedTerm Syntax.LambdaParameterType-lambdaParameterTypeVar =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameterType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "var"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the variableArity variant of hydra.java.syntax.LambdaParameter-lambdaParameterVariableArity :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.LambdaParameter-lambdaParameterVariableArity x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variableArity"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_Normal :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LambdaParameterType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.LambdaParameter_Normal-lambdaParameter_Normal modifiers type_ id =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)}]}))---- | DSL accessor for the id field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalId :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.VariableDeclaratorId-lambdaParameter_NormalId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalLambdaParameter_Normal :: Typed.TypedName Syntax.LambdaParameter_Normal-lambdaParameter_NormalLambdaParameter_Normal = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaParameter_Normal")---- | DSL accessor for the modifiers field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalModifiers :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm [Syntax.VariableModifier]-lambdaParameter_NormalModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalType :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameterType-lambdaParameter_NormalType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the id field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalWithId :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.LambdaParameter_Normal-lambdaParameter_NormalWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalWithModifiers :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LambdaParameter_Normal-lambdaParameter_NormalWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.LambdaParameter_Normal-lambdaParameter_NormalWithType :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameterType -> Typed.TypedTerm Syntax.LambdaParameter_Normal-lambdaParameter_NormalWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameter_Normal"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.LambdaParameters-lambdaParametersLambdaParameters :: Typed.TypedName Syntax.LambdaParameters-lambdaParametersLambdaParameters = Typed.TypedName (Core.Name "hydra.java.syntax.LambdaParameters")---- | DSL injection for the single variant of hydra.java.syntax.LambdaParameters-lambdaParametersSingle :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LambdaParameters-lambdaParametersSingle x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameters"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "single"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tuple variant of hydra.java.syntax.LambdaParameters-lambdaParametersTuple :: Typed.TypedTerm [Syntax.LambdaParameters] -> Typed.TypedTerm Syntax.LambdaParameters-lambdaParametersTuple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LambdaParameters"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tuple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the arrayAccess variant of hydra.java.syntax.LeftHandSide-leftHandSideArrayAccess :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.LeftHandSide-leftHandSideArrayAccess x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LeftHandSide"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrayAccess"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expressionName variant of hydra.java.syntax.LeftHandSide-leftHandSideExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.LeftHandSide-leftHandSideExpressionName x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LeftHandSide"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expressionName"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the fieldAccess variant of hydra.java.syntax.LeftHandSide-leftHandSideFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.LeftHandSide-leftHandSideFieldAccess x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LeftHandSide"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "fieldAccess"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.LeftHandSide-leftHandSideLeftHandSide :: Typed.TypedName Syntax.LeftHandSide-leftHandSideLeftHandSide = Typed.TypedName (Core.Name "hydra.java.syntax.LeftHandSide")---- | DSL injection for the boolean variant of hydra.java.syntax.Literal-literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal-literalBoolean x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "boolean"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the character variant of hydra.java.syntax.Literal-literalCharacter :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal-literalCharacter x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "character"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the floatingPoint variant of hydra.java.syntax.Literal-literalFloatingPoint :: Typed.TypedTerm Syntax.FloatingPointLiteral -> Typed.TypedTerm Syntax.Literal-literalFloatingPoint x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "floatingPoint"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the integer variant of hydra.java.syntax.Literal-literalInteger :: Typed.TypedTerm Syntax.IntegerLiteral -> Typed.TypedTerm Syntax.Literal-literalInteger x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "integer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.Literal-literalLiteral :: Typed.TypedName Syntax.Literal-literalLiteral = Typed.TypedName (Core.Name "hydra.java.syntax.Literal")---- | DSL injection for the null variant of hydra.java.syntax.Literal-literalNull :: Typed.TypedTerm Syntax.Literal-literalNull =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "null"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the string variant of hydra.java.syntax.Literal-literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal-literalString x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "string"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the textBlock variant of hydra.java.syntax.Literal-literalTextBlock :: Typed.TypedTerm Syntax.TextBlock -> Typed.TypedTerm Syntax.Literal-literalTextBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Literal"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "textBlock"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the class variant of hydra.java.syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration :: Typed.TypedName Syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration")---- | DSL injection for the normalInterface variant of hydra.java.syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationNormalInterface :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration-localClassOrInterfaceDeclarationNormalInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "normalInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.LocalVariableDeclaration-localVariableDeclaration :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.LocalVariableDeclaration-localVariableDeclaration modifiers type_ declarators =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "declarators"),-          Core.fieldTerm = (Typed.unTypedTerm declarators)}]}))---- | DSL accessor for the declarators field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationDeclarators :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]-localVariableDeclarationDeclarators x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-        Core.projectionFieldName = (Core.Name "declarators")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationLocalVariableDeclaration :: Typed.TypedName Syntax.LocalVariableDeclaration-localVariableDeclarationLocalVariableDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.LocalVariableDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationModifiers :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableModifier]-localVariableDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for the hydra.java.syntax.LocalVariableDeclarationStatement wrapper-localVariableDeclarationStatement :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableDeclarationStatement-localVariableDeclarationStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclarationStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.LocalVariableDeclarationStatement-localVariableDeclarationStatementLocalVariableDeclarationStatement :: Typed.TypedName Syntax.LocalVariableDeclarationStatement-localVariableDeclarationStatementLocalVariableDeclarationStatement =-    Typed.TypedName (Core.Name "hydra.java.syntax.LocalVariableDeclarationStatement")---- | DSL accessor for the type field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationType :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableType-localVariableDeclarationType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the declarators field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationWithDeclarators :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.LocalVariableDeclaration-localVariableDeclarationWithDeclarators original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarators"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationWithModifiers :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableDeclaration-localVariableDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarators"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "declarators")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.LocalVariableDeclaration-localVariableDeclarationWithType :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.LocalVariableDeclaration-localVariableDeclarationWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "declarators"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableDeclaration"),-              Core.projectionFieldName = (Core.Name "declarators")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.LocalVariableType-localVariableTypeLocalVariableType :: Typed.TypedName Syntax.LocalVariableType-localVariableTypeLocalVariableType = Typed.TypedName (Core.Name "hydra.java.syntax.LocalVariableType")---- | DSL injection for the type variant of hydra.java.syntax.LocalVariableType-localVariableTypeType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.LocalVariableType-localVariableTypeType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the var variant of hydra.java.syntax.LocalVariableType-localVariableTypeVar :: Typed.TypedTerm Syntax.LocalVariableType-localVariableTypeVar =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.LocalVariableType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "var"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.MarkerAnnotation wrapper-markerAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MarkerAnnotation-markerAnnotation x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.MarkerAnnotation"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MarkerAnnotation-markerAnnotationMarkerAnnotation :: Typed.TypedName Syntax.MarkerAnnotation-markerAnnotationMarkerAnnotation = Typed.TypedName (Core.Name "hydra.java.syntax.MarkerAnnotation")---- | DSL injection for the block variant of hydra.java.syntax.MethodBody-methodBodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.MethodBody-methodBodyBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.MethodBody-methodBodyMethodBody :: Typed.TypedName Syntax.MethodBody-methodBodyMethodBody = Typed.TypedName (Core.Name "hydra.java.syntax.MethodBody")---- | DSL injection for the none variant of hydra.java.syntax.MethodBody-methodBodyNone :: Typed.TypedTerm Syntax.MethodBody-methodBodyNone =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodBody"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "none"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for hydra.java.syntax.MethodDeclaration-methodDeclaration :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm [Syntax.MethodModifier] -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.MethodDeclaration-methodDeclaration annotations modifiers header body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Typed.unTypedTerm header)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.MethodDeclaration-methodDeclarationAnnotations :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.Annotation]-methodDeclarationAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.java.syntax.MethodDeclaration-methodDeclarationBody :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodBody-methodDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the header field of hydra.java.syntax.MethodDeclaration-methodDeclarationHeader :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader-methodDeclarationHeader x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-        Core.projectionFieldName = (Core.Name "header")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodDeclaration-methodDeclarationMethodDeclaration :: Typed.TypedName Syntax.MethodDeclaration-methodDeclarationMethodDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.MethodDeclaration")---- | DSL accessor for the modifiers field of hydra.java.syntax.MethodDeclaration-methodDeclarationModifiers :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.MethodModifier]-methodDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.MethodDeclaration-methodDeclarationWithAnnotations :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.MethodDeclaration-methodDeclarationWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            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.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.java.syntax.MethodDeclaration-methodDeclarationWithBody :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.MethodDeclaration-methodDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the header field of hydra.java.syntax.MethodDeclaration-methodDeclarationWithHeader :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclaration-methodDeclarationWithHeader original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          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.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.MethodDeclaration-methodDeclarationWithModifiers :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.MethodModifier] -> Typed.TypedTerm Syntax.MethodDeclaration-methodDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            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.java.syntax.MethodDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodDeclarator-methodDeclarator :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.MethodDeclarator-methodDeclarator identifier receiverParameter formalParameters =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Typed.unTypedTerm receiverParameter)},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Typed.unTypedTerm formalParameters)}]}))---- | DSL accessor for the formalParameters field of hydra.java.syntax.MethodDeclarator-methodDeclaratorFormalParameters :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm [Syntax.FormalParameter]-methodDeclaratorFormalParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-        Core.projectionFieldName = (Core.Name "formalParameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodDeclarator-methodDeclaratorIdentifier :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.Identifier-methodDeclaratorIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodDeclarator-methodDeclaratorMethodDeclarator :: Typed.TypedName Syntax.MethodDeclarator-methodDeclaratorMethodDeclarator = Typed.TypedName (Core.Name "hydra.java.syntax.MethodDeclarator")---- | DSL accessor for the receiverParameter field of hydra.java.syntax.MethodDeclarator-methodDeclaratorReceiverParameter :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter)-methodDeclaratorReceiverParameter x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-        Core.projectionFieldName = (Core.Name "receiverParameter")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the formalParameters field of hydra.java.syntax.MethodDeclarator-methodDeclaratorWithFormalParameters :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.MethodDeclarator-methodDeclaratorWithFormalParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "receiverParameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodDeclarator-methodDeclaratorWithIdentifier :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodDeclarator-methodDeclaratorWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "receiverParameter")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "formalParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the receiverParameter field of hydra.java.syntax.MethodDeclarator-methodDeclaratorWithReceiverParameter :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm Syntax.MethodDeclarator-methodDeclaratorWithReceiverParameter original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "receiverParameter"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "formalParameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodDeclarator"),-              Core.projectionFieldName = (Core.Name "formalParameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodHeader-methodHeader :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.Result -> Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.MethodHeader-methodHeader parameters result declarator throws =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "result"),-          Core.fieldTerm = (Typed.unTypedTerm result)},-        Core.Field {-          Core.fieldName = (Core.Name "declarator"),-          Core.fieldTerm = (Typed.unTypedTerm declarator)},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Typed.unTypedTerm throws)}]}))---- | DSL accessor for the declarator field of hydra.java.syntax.MethodHeader-methodHeaderDeclarator :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclarator-methodHeaderDeclarator x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-        Core.projectionFieldName = (Core.Name "declarator")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodHeader-methodHeaderMethodHeader :: Typed.TypedName Syntax.MethodHeader-methodHeaderMethodHeader = Typed.TypedName (Core.Name "hydra.java.syntax.MethodHeader")---- | DSL accessor for the parameters field of hydra.java.syntax.MethodHeader-methodHeaderParameters :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm [Syntax.TypeParameter]-methodHeaderParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the result field of hydra.java.syntax.MethodHeader-methodHeaderResult :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.Result-methodHeaderResult x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-        Core.projectionFieldName = (Core.Name "result")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the throws field of hydra.java.syntax.MethodHeader-methodHeaderThrows :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm (Maybe Syntax.Throws)-methodHeaderThrows x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-        Core.projectionFieldName = (Core.Name "throws")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the declarator field of hydra.java.syntax.MethodHeader-methodHeaderWithDeclarator :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.MethodHeader-methodHeaderWithDeclarator original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "result"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "result")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarator"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "throws")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the parameters field of hydra.java.syntax.MethodHeader-methodHeaderWithParameters :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.MethodHeader-methodHeaderWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "result"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "result")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "declarator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "throws")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the result field of hydra.java.syntax.MethodHeader-methodHeaderWithResult :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.Result -> Typed.TypedTerm Syntax.MethodHeader-methodHeaderWithResult original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "result"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "declarator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "declarator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "throws")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the throws field of hydra.java.syntax.MethodHeader-methodHeaderWithThrows :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.MethodHeader-methodHeaderWithThrows original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "result"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "result")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "declarator"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodHeader"),-              Core.projectionFieldName = (Core.Name "declarator")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "throws"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.MethodInvocation-methodInvocation :: Typed.TypedTerm Syntax.MethodInvocation_Header -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.MethodInvocation-methodInvocation header arguments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Typed.unTypedTerm header)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)}]}))---- | DSL accessor for the arguments field of hydra.java.syntax.MethodInvocation-methodInvocationArguments :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm [Syntax.Expression]-methodInvocationArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the header field of hydra.java.syntax.MethodInvocation-methodInvocationHeader :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.MethodInvocation_Header-methodInvocationHeader x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-        Core.projectionFieldName = (Core.Name "header")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodInvocation-methodInvocationMethodInvocation :: Typed.TypedName Syntax.MethodInvocation-methodInvocationMethodInvocation = Typed.TypedName (Core.Name "hydra.java.syntax.MethodInvocation")---- | DSL updater for the arguments field of hydra.java.syntax.MethodInvocation-methodInvocationWithArguments :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.MethodInvocation-methodInvocationWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the header field of hydra.java.syntax.MethodInvocation-methodInvocationWithHeader :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.MethodInvocation_Header -> Typed.TypedTerm Syntax.MethodInvocation-methodInvocationWithHeader original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          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.java.syntax.MethodInvocation"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodInvocation_Complex-methodInvocation_Complex :: Typed.TypedTerm Syntax.MethodInvocation_Variant -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodInvocation_Complex-methodInvocation_Complex variant typeArguments identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm variant)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexIdentifier :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.Identifier-methodInvocation_ComplexIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexMethodInvocation_Complex :: Typed.TypedName Syntax.MethodInvocation_Complex-methodInvocation_ComplexMethodInvocation_Complex =-    Typed.TypedName (Core.Name "hydra.java.syntax.MethodInvocation_Complex")---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexTypeArguments :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm [Syntax.TypeArgument]-methodInvocation_ComplexTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the variant field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexVariant :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_ComplexVariant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-        Core.projectionFieldName = (Core.Name "variant")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexWithIdentifier :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodInvocation_Complex-methodInvocation_ComplexWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexWithTypeArguments :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodInvocation_Complex-methodInvocation_ComplexWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "variant")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the variant field of hydra.java.syntax.MethodInvocation_Complex-methodInvocation_ComplexWithVariant :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Variant -> Typed.TypedTerm Syntax.MethodInvocation_Complex-methodInvocation_ComplexWithVariant original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "variant"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Complex"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the complex variant of hydra.java.syntax.MethodInvocation_Header-methodInvocation_HeaderComplex :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Header-methodInvocation_HeaderComplex x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Header"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "complex"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.MethodInvocation_Header-methodInvocation_HeaderMethodInvocation_Header :: Typed.TypedName Syntax.MethodInvocation_Header-methodInvocation_HeaderMethodInvocation_Header = Typed.TypedName (Core.Name "hydra.java.syntax.MethodInvocation_Header")---- | DSL injection for the simple variant of hydra.java.syntax.MethodInvocation_Header-methodInvocation_HeaderSimple :: Typed.TypedTerm Syntax.MethodName -> Typed.TypedTerm Syntax.MethodInvocation_Header-methodInvocation_HeaderSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Header"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantExpression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_VariantExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantMethodInvocation_Variant :: Typed.TypedName Syntax.MethodInvocation_Variant-methodInvocation_VariantMethodInvocation_Variant =-    Typed.TypedName (Core.Name "hydra.java.syntax.MethodInvocation_Variant")---- | DSL injection for the primary variant of hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_VariantPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the super variant of hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantSuper :: Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_VariantSuper =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "super"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the type variant of hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantType :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_VariantType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the typeSuper variant of hydra.java.syntax.MethodInvocation_Variant-methodInvocation_VariantTypeSuper :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MethodInvocation_Variant-methodInvocation_VariantTypeSuper x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodInvocation_Variant"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "typeSuper"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the abstract variant of hydra.java.syntax.MethodModifier-methodModifierAbstract :: Typed.TypedTerm Syntax.MethodModifier-methodModifierAbstract =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "abstract"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the annotation variant of hydra.java.syntax.MethodModifier-methodModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.MethodModifier-methodModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the final variant of hydra.java.syntax.MethodModifier-methodModifierFinal :: Typed.TypedTerm Syntax.MethodModifier-methodModifierFinal =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "final"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.MethodModifier-methodModifierMethodModifier :: Typed.TypedName Syntax.MethodModifier-methodModifierMethodModifier = Typed.TypedName (Core.Name "hydra.java.syntax.MethodModifier")---- | DSL injection for the native variant of hydra.java.syntax.MethodModifier-methodModifierNative :: Typed.TypedTerm Syntax.MethodModifier-methodModifierNative =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "native"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the private variant of hydra.java.syntax.MethodModifier-methodModifierPrivate :: Typed.TypedTerm Syntax.MethodModifier-methodModifierPrivate =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "private"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the protected variant of hydra.java.syntax.MethodModifier-methodModifierProtected :: Typed.TypedTerm Syntax.MethodModifier-methodModifierProtected =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "protected"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the public variant of hydra.java.syntax.MethodModifier-methodModifierPublic :: Typed.TypedTerm Syntax.MethodModifier-methodModifierPublic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "public"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the static variant of hydra.java.syntax.MethodModifier-methodModifierStatic :: Typed.TypedTerm Syntax.MethodModifier-methodModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the strictfp variant of hydra.java.syntax.MethodModifier-methodModifierStrictfp :: Typed.TypedTerm Syntax.MethodModifier-methodModifierStrictfp =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "strictfp"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the synchronized variant of hydra.java.syntax.MethodModifier-methodModifierSynchronized :: Typed.TypedTerm Syntax.MethodModifier-methodModifierSynchronized =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "synchronized"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.MethodName wrapper-methodName :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodName-methodName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.MethodName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodName-methodNameMethodName :: Typed.TypedName Syntax.MethodName-methodNameMethodName = Typed.TypedName (Core.Name "hydra.java.syntax.MethodName")---- | DSL injection for the array variant of hydra.java.syntax.MethodReference-methodReferenceArray :: Typed.TypedTerm Syntax.MethodReference_Array -> Typed.TypedTerm Syntax.MethodReference-methodReferenceArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.java.syntax.MethodReference-methodReferenceExpression :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.MethodReference-methodReferenceExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.MethodReference-methodReferenceMethodReference :: Typed.TypedName Syntax.MethodReference-methodReferenceMethodReference = Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference")---- | DSL injection for the new variant of hydra.java.syntax.MethodReference-methodReferenceNew :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.MethodReference-methodReferenceNew x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "new"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the primary variant of hydra.java.syntax.MethodReference-methodReferencePrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.MethodReference-methodReferencePrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the referenceType variant of hydra.java.syntax.MethodReference-methodReferenceReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.MethodReference-methodReferenceReferenceType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "referenceType"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the super variant of hydra.java.syntax.MethodReference-methodReferenceSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.MethodReference-methodReferenceSuper x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MethodReference"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "super"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.MethodReference_Array wrapper-methodReference_Array :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.MethodReference_Array-methodReference_Array x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.MethodReference_Array"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_Array-methodReference_ArrayMethodReference_Array :: Typed.TypedName Syntax.MethodReference_Array-methodReference_ArrayMethodReference_Array = Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_Array")---- | DSL constructor for hydra.java.syntax.MethodReference_Expression-methodReference_Expression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Expression-methodReference_Expression name typeArguments identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionIdentifier :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.Identifier-methodReference_ExpressionIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionMethodReference_Expression :: Typed.TypedName Syntax.MethodReference_Expression-methodReference_ExpressionMethodReference_Expression =-    Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_Expression")---- | DSL accessor for the name field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionName :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.ExpressionName-methodReference_ExpressionName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm [Syntax.TypeArgument]-methodReference_ExpressionTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Expression-methodReference_ExpressionWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-      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.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the name field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionWithName :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.MethodReference_Expression-methodReference_ExpressionWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Expression-methodReference_ExpressionWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Expression-methodReference_ExpressionWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-      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.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Expression"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodReference_New-methodReference_New :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_New-methodReference_New classType typeArguments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "classType"),-          Core.fieldTerm = (Typed.unTypedTerm classType)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)}]}))---- | DSL accessor for the classType field of hydra.java.syntax.MethodReference_New-methodReference_NewClassType :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.ClassType-methodReference_NewClassType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-        Core.projectionFieldName = (Core.Name "classType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_New-methodReference_NewMethodReference_New :: Typed.TypedName Syntax.MethodReference_New-methodReference_NewMethodReference_New = Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_New")---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_New-methodReference_NewTypeArguments :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm [Syntax.TypeArgument]-methodReference_NewTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the classType field of hydra.java.syntax.MethodReference_New-methodReference_NewWithClassType :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.MethodReference_New-methodReference_NewWithClassType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "classType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_New-methodReference_NewWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_New-methodReference_NewWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "classType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_New"),-              Core.projectionFieldName = (Core.Name "classType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.MethodReference_Primary-methodReference_Primary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Primary-methodReference_Primary primary typeArguments identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "primary"),-          Core.fieldTerm = (Typed.unTypedTerm primary)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryIdentifier :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Identifier-methodReference_PrimaryIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryMethodReference_Primary :: Typed.TypedName Syntax.MethodReference_Primary-methodReference_PrimaryMethodReference_Primary = Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_Primary")---- | DSL accessor for the primary field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryPrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Primary-methodReference_PrimaryPrimary x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-        Core.projectionFieldName = (Core.Name "primary")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm [Syntax.TypeArgument]-methodReference_PrimaryTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Primary-methodReference_PrimaryWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "primary"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "primary")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the primary field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryWithPrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.MethodReference_Primary-methodReference_PrimaryWithPrimary original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "primary"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Primary-methodReference_PrimaryWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Primary-methodReference_PrimaryWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "primary"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "primary")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Primary"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceType :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_ReferenceType-methodReference_ReferenceType referenceType typeArguments identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "referenceType"),-          Core.fieldTerm = (Typed.unTypedTerm referenceType)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeIdentifier :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.Identifier-methodReference_ReferenceTypeIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeMethodReference_ReferenceType :: Typed.TypedName Syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeMethodReference_ReferenceType =-    Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_ReferenceType")---- | DSL accessor for the referenceType field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.ReferenceType-methodReference_ReferenceTypeReferenceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-        Core.projectionFieldName = (Core.Name "referenceType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeTypeArguments :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument]-methodReference_ReferenceTypeTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "referenceType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "referenceType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the referenceType field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithReferenceType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "referenceType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_ReferenceType-methodReference_ReferenceTypeWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "referenceType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "referenceType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_ReferenceType"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.MethodReference_Super-methodReference_Super :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodReference_Super-methodReference_Super typeArguments identifier super =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "super"),-          Core.fieldTerm = (Typed.unTypedTerm super)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Super-methodReference_SuperIdentifier :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.Identifier-methodReference_SuperIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MethodReference_Super-methodReference_SuperMethodReference_Super :: Typed.TypedName Syntax.MethodReference_Super-methodReference_SuperMethodReference_Super = Typed.TypedName (Core.Name "hydra.java.syntax.MethodReference_Super")---- | DSL accessor for the super field of hydra.java.syntax.MethodReference_Super-methodReference_SuperSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Bool-methodReference_SuperSuper x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-        Core.projectionFieldName = (Core.Name "super")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Super-methodReference_SuperTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm [Syntax.TypeArgument]-methodReference_SuperTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Super-methodReference_SuperWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Super-methodReference_SuperWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "super"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "super")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the super field of hydra.java.syntax.MethodReference_Super-methodReference_SuperWithSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodReference_Super-methodReference_SuperWithSuper original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "super"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Super-methodReference_SuperWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Super-methodReference_SuperWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "super"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MethodReference_Super"),-              Core.projectionFieldName = (Core.Name "super")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ModularCompilationUnit-modularCompilationUnit :: Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Syntax.ModularCompilationUnit-modularCompilationUnit imports module_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm imports)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm module_)}]}))---- | DSL accessor for the imports field of hydra.java.syntax.ModularCompilationUnit-modularCompilationUnitImports :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration]-modularCompilationUnitImports x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-        Core.projectionFieldName = (Core.Name "imports")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ModularCompilationUnit-modularCompilationUnitModularCompilationUnit :: Typed.TypedName Syntax.ModularCompilationUnit-modularCompilationUnitModularCompilationUnit = Typed.TypedName (Core.Name "hydra.java.syntax.ModularCompilationUnit")---- | DSL accessor for the module field of hydra.java.syntax.ModularCompilationUnit-modularCompilationUnitModule :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.ModuleDeclaration-modularCompilationUnitModule x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-        Core.projectionFieldName = (Core.Name "module")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the imports field of hydra.java.syntax.ModularCompilationUnit-modularCompilationUnitWithImports :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.ModularCompilationUnit-modularCompilationUnitWithImports original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-              Core.projectionFieldName = (Core.Name "module")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the module field of hydra.java.syntax.ModularCompilationUnit-modularCompilationUnitWithModule :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Syntax.ModularCompilationUnit-modularCompilationUnitWithModule original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModularCompilationUnit"),-              Core.projectionFieldName = (Core.Name "imports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.ModuleDeclaration-moduleDeclaration :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm [Syntax.ModuleDirective] -> Typed.TypedTerm Syntax.ModuleDeclaration-moduleDeclaration annotations open identifiers directives =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "open"),-          Core.fieldTerm = (Typed.unTypedTerm open)},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm identifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "directives"),-          Core.fieldTerm = (Typed.unTypedTerm directives)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationAnnotations :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Annotation]-moduleDeclarationAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the directives field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationDirectives :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.ModuleDirective]-moduleDeclarationDirectives x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-        Core.projectionFieldName = (Core.Name "directives")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifiers field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationIdentifiers :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Identifier]-moduleDeclarationIdentifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-        Core.projectionFieldName = (Core.Name "identifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ModuleDeclaration-moduleDeclarationModuleDeclaration :: Typed.TypedName Syntax.ModuleDeclaration-moduleDeclarationModuleDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.ModuleDeclaration")---- | DSL accessor for the open field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationOpen :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Bool-moduleDeclarationOpen x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-        Core.projectionFieldName = (Core.Name "open")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationWithAnnotations :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ModuleDeclaration-moduleDeclarationWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "open"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "open")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "identifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "directives"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "directives")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the directives field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationWithDirectives :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.ModuleDirective] -> Typed.TypedTerm Syntax.ModuleDeclaration-moduleDeclarationWithDirectives original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "open"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "open")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "identifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "directives"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifiers field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationWithIdentifiers :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.ModuleDeclaration-moduleDeclarationWithIdentifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "open"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "open")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "directives"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "directives")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the open field of hydra.java.syntax.ModuleDeclaration-moduleDeclarationWithOpen :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ModuleDeclaration-moduleDeclarationWithOpen original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "open"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "identifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "directives"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDeclaration"),-              Core.projectionFieldName = (Core.Name "directives")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the exports variant of hydra.java.syntax.ModuleDirective-moduleDirectiveExports :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.ModuleDirective-moduleDirectiveExports x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "exports"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ModuleDirective-moduleDirectiveModuleDirective :: Typed.TypedName Syntax.ModuleDirective-moduleDirectiveModuleDirective = Typed.TypedName (Core.Name "hydra.java.syntax.ModuleDirective")---- | DSL injection for the opens variant of hydra.java.syntax.ModuleDirective-moduleDirectiveOpens :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.ModuleDirective-moduleDirectiveOpens x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "opens"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the provides variant of hydra.java.syntax.ModuleDirective-moduleDirectiveProvides :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.ModuleDirective-moduleDirectiveProvides x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "provides"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the requires variant of hydra.java.syntax.ModuleDirective-moduleDirectiveRequires :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleDirective-moduleDirectiveRequires x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "requires"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the uses variant of hydra.java.syntax.ModuleDirective-moduleDirectiveUses :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.ModuleDirective-moduleDirectiveUses x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "uses"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpens :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm [Syntax.ModuleName] -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpens package modules =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Typed.unTypedTerm package)},-        Core.Field {-          Core.fieldName = (Core.Name "modules"),-          Core.fieldTerm = (Typed.unTypedTerm modules)}]}))---- | DSL name token for hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens :: Typed.TypedName Syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens =-    Typed.TypedName (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens")---- | DSL accessor for the modules field of hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensModules :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm [Syntax.ModuleName]-moduleDirective_ExportsOrOpensModules x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-        Core.projectionFieldName = (Core.Name "modules")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the package field of hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensPackage :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.PackageName-moduleDirective_ExportsOrOpensPackage x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-        Core.projectionFieldName = (Core.Name "package")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the modules field of hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensWithModules :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm [Syntax.ModuleName] -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensWithModules original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-              Core.projectionFieldName = (Core.Name "package")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "modules"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the package field of hydra.java.syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensWithPackage :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens-moduleDirective_ExportsOrOpensWithPackage original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "modules"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),-              Core.projectionFieldName = (Core.Name "modules")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ModuleDirective_Provides-moduleDirective_Provides :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ModuleDirective_Provides-moduleDirective_Provides to with =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "to"),-          Core.fieldTerm = (Typed.unTypedTerm to)},-        Core.Field {-          Core.fieldName = (Core.Name "with"),-          Core.fieldTerm = (Typed.unTypedTerm with)}]}))---- | DSL name token for hydra.java.syntax.ModuleDirective_Provides-moduleDirective_ProvidesModuleDirective_Provides :: Typed.TypedName Syntax.ModuleDirective_Provides-moduleDirective_ProvidesModuleDirective_Provides =-    Typed.TypedName (Core.Name "hydra.java.syntax.ModuleDirective_Provides")---- | DSL accessor for the to field of hydra.java.syntax.ModuleDirective_Provides-moduleDirective_ProvidesTo :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.TypeName-moduleDirective_ProvidesTo x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-        Core.projectionFieldName = (Core.Name "to")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the with field of hydra.java.syntax.ModuleDirective_Provides-moduleDirective_ProvidesWith :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm [Syntax.TypeName]-moduleDirective_ProvidesWith x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-        Core.projectionFieldName = (Core.Name "with")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the to field of hydra.java.syntax.ModuleDirective_Provides-moduleDirective_ProvidesWithTo :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.ModuleDirective_Provides-moduleDirective_ProvidesWithTo original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "to"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "with"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-              Core.projectionFieldName = (Core.Name "with")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the with field of hydra.java.syntax.ModuleDirective_Provides-moduleDirective_ProvidesWithWith :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ModuleDirective_Provides-moduleDirective_ProvidesWithWith original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "to"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Provides"),-              Core.projectionFieldName = (Core.Name "to")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "with"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.ModuleDirective_Requires-moduleDirective_Requires :: Typed.TypedTerm [Syntax.RequiresModifier] -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleDirective_Requires-moduleDirective_Requires modifiers module_ =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm module_)}]}))---- | DSL accessor for the modifiers field of hydra.java.syntax.ModuleDirective_Requires-moduleDirective_RequiresModifiers :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm [Syntax.RequiresModifier]-moduleDirective_RequiresModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the module field of hydra.java.syntax.ModuleDirective_Requires-moduleDirective_RequiresModule :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleName-moduleDirective_RequiresModule x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-        Core.projectionFieldName = (Core.Name "module")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ModuleDirective_Requires-moduleDirective_RequiresModuleDirective_Requires :: Typed.TypedName Syntax.ModuleDirective_Requires-moduleDirective_RequiresModuleDirective_Requires =-    Typed.TypedName (Core.Name "hydra.java.syntax.ModuleDirective_Requires")---- | DSL updater for the modifiers field of hydra.java.syntax.ModuleDirective_Requires-moduleDirective_RequiresWithModifiers :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm [Syntax.RequiresModifier] -> Typed.TypedTerm Syntax.ModuleDirective_Requires-moduleDirective_RequiresWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-              Core.projectionFieldName = (Core.Name "module")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the module field of hydra.java.syntax.ModuleDirective_Requires-moduleDirective_RequiresWithModule :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleDirective_Requires-moduleDirective_RequiresWithModule original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleDirective_Requires"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "module"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.ModuleName-moduleName :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.ModuleName-moduleName identifier name =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.ModuleName-moduleNameIdentifier :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Identifier-moduleNameIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ModuleName-moduleNameModuleName :: Typed.TypedName Syntax.ModuleName-moduleNameModuleName = Typed.TypedName (Core.Name "hydra.java.syntax.ModuleName")---- | DSL accessor for the name field of hydra.java.syntax.ModuleName-moduleNameName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName)-moduleNameName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.ModuleName-moduleNameWithIdentifier :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ModuleName-moduleNameWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the name field of hydra.java.syntax.ModuleName-moduleNameWithName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.ModuleName-moduleNameWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ModuleName"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the divide variant of hydra.java.syntax.MultiplicativeExpression-multiplicativeExpressionDivide :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression-multiplicativeExpressionDivide x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "divide"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the mod variant of hydra.java.syntax.MultiplicativeExpression-multiplicativeExpressionMod :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression-multiplicativeExpressionMod x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "mod"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.MultiplicativeExpression-multiplicativeExpressionMultiplicativeExpression :: Typed.TypedName Syntax.MultiplicativeExpression-multiplicativeExpressionMultiplicativeExpression =-    Typed.TypedName (Core.Name "hydra.java.syntax.MultiplicativeExpression")---- | DSL injection for the times variant of hydra.java.syntax.MultiplicativeExpression-multiplicativeExpressionTimes :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression-multiplicativeExpressionTimes x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "times"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unary variant of hydra.java.syntax.MultiplicativeExpression-multiplicativeExpressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression-multiplicativeExpressionUnary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_Binary :: Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary-multiplicativeExpression_Binary lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryLhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression-multiplicativeExpression_BinaryLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryMultiplicativeExpression_Binary :: Typed.TypedName Syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryMultiplicativeExpression_Binary =-    Typed.TypedName (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary")---- | DSL accessor for the rhs field of hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryRhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.UnaryExpression-multiplicativeExpression_BinaryRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary-multiplicativeExpression_BinaryWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.NormalAnnotation-normalAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm [Syntax.ElementValuePair] -> Typed.TypedTerm Syntax.NormalAnnotation-normalAnnotation typeName pairs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Typed.unTypedTerm typeName)},-        Core.Field {-          Core.fieldName = (Core.Name "pairs"),-          Core.fieldTerm = (Typed.unTypedTerm pairs)}]}))---- | DSL name token for hydra.java.syntax.NormalAnnotation-normalAnnotationNormalAnnotation :: Typed.TypedName Syntax.NormalAnnotation-normalAnnotationNormalAnnotation = Typed.TypedName (Core.Name "hydra.java.syntax.NormalAnnotation")---- | DSL accessor for the pairs field of hydra.java.syntax.NormalAnnotation-normalAnnotationPairs :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm [Syntax.ElementValuePair]-normalAnnotationPairs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-        Core.projectionFieldName = (Core.Name "pairs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeName field of hydra.java.syntax.NormalAnnotation-normalAnnotationTypeName :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.TypeName-normalAnnotationTypeName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-        Core.projectionFieldName = (Core.Name "typeName")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the pairs field of hydra.java.syntax.NormalAnnotation-normalAnnotationWithPairs :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm [Syntax.ElementValuePair] -> Typed.TypedTerm Syntax.NormalAnnotation-normalAnnotationWithPairs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-              Core.projectionFieldName = (Core.Name "typeName")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "pairs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeName field of hydra.java.syntax.NormalAnnotation-normalAnnotationWithTypeName :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.NormalAnnotation-normalAnnotationWithTypeName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "pairs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalAnnotation"),-              Core.projectionFieldName = (Core.Name "pairs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.NormalClassDeclaration-normalClassDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.ClassType) -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclaration modifiers identifier parameters extends implements permits body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm extends)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Typed.unTypedTerm implements)},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Typed.unTypedTerm permits)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationBody :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassBody-normalClassDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the extends field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationExtends :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm (Maybe Syntax.ClassType)-normalClassDeclarationExtends x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "extends")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationIdentifier :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier-normalClassDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the implements field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationImplements :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]-normalClassDeclarationImplements x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "implements")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationModifiers :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]-normalClassDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationNormalClassDeclaration :: Typed.TypedName Syntax.NormalClassDeclaration-normalClassDeclarationNormalClassDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.NormalClassDeclaration")---- | DSL accessor for the parameters field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationParameters :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-normalClassDeclarationParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the permits field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationPermits :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeName]-normalClassDeclarationPermits x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-        Core.projectionFieldName = (Core.Name "permits")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithBody :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the extends field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithExtends :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm (Maybe Syntax.ClassType) -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithExtends original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithIdentifier :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the implements field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithImplements :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithImplements original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithModifiers :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the parameters field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithParameters :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the permits field of hydra.java.syntax.NormalClassDeclaration-normalClassDeclarationWithPermits :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.NormalClassDeclaration-normalClassDeclarationWithPermits original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          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.java.syntax.NormalClassDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclaration :: Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclaration modifiers identifier parameters extends permits body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm extends)},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Typed.unTypedTerm permits)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationBody :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceBody-normalInterfaceDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the extends field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationExtends :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]-normalInterfaceDeclarationExtends x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "extends")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationIdentifier :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier-normalInterfaceDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationModifiers :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier]-normalInterfaceDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationNormalInterfaceDeclaration :: Typed.TypedName Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationNormalInterfaceDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration")---- | DSL accessor for the parameters field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationParameters :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-normalInterfaceDeclarationParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the permits field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationPermits :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeName]-normalInterfaceDeclarationPermits x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-        Core.projectionFieldName = (Core.Name "permits")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the body field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithBody :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the extends field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithExtends original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "extends"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithIdentifier :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithModifiers :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the parameters field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithParameters :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "permits")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the permits field of hydra.java.syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithPermits :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration-normalInterfaceDeclarationWithPermits original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "extends")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "permits"),-          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.java.syntax.NormalInterfaceDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.java.syntax.NumericTypeArray-numericTypeArrayArray :: Typed.TypedTerm Syntax.NumericTypeArray -> Typed.TypedTerm Syntax.NumericTypeArray-numericTypeArrayArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.NumericTypeArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.NumericTypeArray-numericTypeArrayNumericTypeArray :: Typed.TypedName Syntax.NumericTypeArray-numericTypeArrayNumericTypeArray = Typed.TypedName (Core.Name "hydra.java.syntax.NumericTypeArray")---- | DSL injection for the simple variant of hydra.java.syntax.NumericTypeArray-numericTypeArraySimple :: Typed.TypedTerm Syntax.NumericType -> Typed.TypedTerm Syntax.NumericTypeArray-numericTypeArraySimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.NumericTypeArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the floatingPoint variant of hydra.java.syntax.NumericType-numericTypeFloatingPoint :: Typed.TypedTerm Syntax.FloatingPointType -> Typed.TypedTerm Syntax.NumericType-numericTypeFloatingPoint x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.NumericType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "floatingPoint"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the integral variant of hydra.java.syntax.NumericType-numericTypeIntegral :: Typed.TypedTerm Syntax.IntegralType -> Typed.TypedTerm Syntax.NumericType-numericTypeIntegral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.NumericType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "integral"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.NumericType-numericTypeNumericType :: Typed.TypedName Syntax.NumericType-numericTypeNumericType = Typed.TypedName (Core.Name "hydra.java.syntax.NumericType")---- | DSL constructor for hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnit :: Typed.TypedTerm (Maybe Syntax.PackageDeclaration) -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit-ordinaryCompilationUnit package imports types =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Typed.unTypedTerm package)},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm imports)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm types)}]}))---- | DSL accessor for the imports field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitImports :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration]-ordinaryCompilationUnitImports x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-        Core.projectionFieldName = (Core.Name "imports")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitOrdinaryCompilationUnit :: Typed.TypedName Syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitOrdinaryCompilationUnit = Typed.TypedName (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit")---- | DSL accessor for the package field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitPackage :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm (Maybe Syntax.PackageDeclaration)-ordinaryCompilationUnitPackage x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-        Core.projectionFieldName = (Core.Name "package")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the types field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitTypes :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments]-ordinaryCompilationUnitTypes x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-        Core.projectionFieldName = (Core.Name "types")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the imports field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithImports :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithImports original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "package")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "types")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the package field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithPackage :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm (Maybe Syntax.PackageDeclaration) -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithPackage original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "imports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "types")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the types field of hydra.java.syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithTypes :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit-ordinaryCompilationUnitWithTypes original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "package"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "package")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "imports"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"),-              Core.projectionFieldName = (Core.Name "imports")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "types"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.PackageDeclaration-packageDeclaration :: Typed.TypedTerm [Syntax.PackageModifier] -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageDeclaration-packageDeclaration modifiers identifiers =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm identifiers)}]}))---- | DSL accessor for the identifiers field of hydra.java.syntax.PackageDeclaration-packageDeclarationIdentifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.Identifier]-packageDeclarationIdentifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-        Core.projectionFieldName = (Core.Name "identifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.PackageDeclaration-packageDeclarationModifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.PackageModifier]-packageDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PackageDeclaration-packageDeclarationPackageDeclaration :: Typed.TypedName Syntax.PackageDeclaration-packageDeclarationPackageDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.PackageDeclaration")---- | DSL updater for the identifiers field of hydra.java.syntax.PackageDeclaration-packageDeclarationWithIdentifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageDeclaration-packageDeclarationWithIdentifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.PackageDeclaration-packageDeclarationWithModifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.PackageModifier] -> Typed.TypedTerm Syntax.PackageDeclaration-packageDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.PackageDeclaration"),-              Core.projectionFieldName = (Core.Name "identifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.PackageModifier wrapper-packageModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.PackageModifier-packageModifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PackageModifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PackageModifier-packageModifierPackageModifier :: Typed.TypedName Syntax.PackageModifier-packageModifierPackageModifier = Typed.TypedName (Core.Name "hydra.java.syntax.PackageModifier")---- | DSL constructor for the hydra.java.syntax.PackageName wrapper-packageName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageName-packageName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PackageName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PackageName-packageNamePackageName :: Typed.TypedName Syntax.PackageName-packageNamePackageName = Typed.TypedName (Core.Name "hydra.java.syntax.PackageName")---- | DSL constructor for the hydra.java.syntax.PackageOrTypeName wrapper-packageOrTypeName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageOrTypeName-packageOrTypeName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PackageOrTypeName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PackageOrTypeName-packageOrTypeNamePackageOrTypeName :: Typed.TypedName Syntax.PackageOrTypeName-packageOrTypeNamePackageOrTypeName = Typed.TypedName (Core.Name "hydra.java.syntax.PackageOrTypeName")---- | DSL name token for hydra.java.syntax.Pattern-patternPattern :: Typed.TypedName Syntax.Pattern-patternPattern = Typed.TypedName (Core.Name "hydra.java.syntax.Pattern")---- | DSL injection for the record variant of hydra.java.syntax.Pattern-patternRecord :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Pattern-patternRecord x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "record"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the type variant of hydra.java.syntax.Pattern-patternType :: Typed.TypedTerm Syntax.TypePattern -> Typed.TypedTerm Syntax.Pattern-patternType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Pattern"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.PostDecrementExpression wrapper-postDecrementExpression :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.PostDecrementExpression-postDecrementExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PostDecrementExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PostDecrementExpression-postDecrementExpressionPostDecrementExpression :: Typed.TypedName Syntax.PostDecrementExpression-postDecrementExpressionPostDecrementExpression = Typed.TypedName (Core.Name "hydra.java.syntax.PostDecrementExpression")---- | DSL constructor for the hydra.java.syntax.PostIncrementExpression wrapper-postIncrementExpression :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.PostIncrementExpression-postIncrementExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PostIncrementExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PostIncrementExpression-postIncrementExpressionPostIncrementExpression :: Typed.TypedName Syntax.PostIncrementExpression-postIncrementExpressionPostIncrementExpression = Typed.TypedName (Core.Name "hydra.java.syntax.PostIncrementExpression")---- | DSL injection for the name variant of hydra.java.syntax.PostfixExpression-postfixExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.PostfixExpression-postfixExpressionName x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PostfixExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "name"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the postDecrement variant of hydra.java.syntax.PostfixExpression-postfixExpressionPostDecrement :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.PostfixExpression-postfixExpressionPostDecrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PostfixExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "postDecrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the postIncrement variant of hydra.java.syntax.PostfixExpression-postfixExpressionPostIncrement :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.PostfixExpression-postfixExpressionPostIncrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PostfixExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "postIncrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.PostfixExpression-postfixExpressionPostfixExpression :: Typed.TypedName Syntax.PostfixExpression-postfixExpressionPostfixExpression = Typed.TypedName (Core.Name "hydra.java.syntax.PostfixExpression")---- | DSL injection for the primary variant of hydra.java.syntax.PostfixExpression-postfixExpressionPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PostfixExpression-postfixExpressionPrimary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PostfixExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.PreDecrementExpression wrapper-preDecrementExpression :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.PreDecrementExpression-preDecrementExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PreDecrementExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PreDecrementExpression-preDecrementExpressionPreDecrementExpression :: Typed.TypedName Syntax.PreDecrementExpression-preDecrementExpressionPreDecrementExpression = Typed.TypedName (Core.Name "hydra.java.syntax.PreDecrementExpression")---- | DSL constructor for the hydra.java.syntax.PreIncrementExpression wrapper-preIncrementExpression :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.PreIncrementExpression-preIncrementExpression x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.PreIncrementExpression"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PreIncrementExpression-preIncrementExpressionPreIncrementExpression :: Typed.TypedName Syntax.PreIncrementExpression-preIncrementExpressionPreIncrementExpression = Typed.TypedName (Core.Name "hydra.java.syntax.PreIncrementExpression")---- | DSL injection for the arrayCreation variant of hydra.java.syntax.Primary-primaryArrayCreation :: Typed.TypedTerm Syntax.ArrayCreationExpression -> Typed.TypedTerm Syntax.Primary-primaryArrayCreation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Primary"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrayCreation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the noNewArray variant of hydra.java.syntax.Primary-primaryNoNewArray :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression -> Typed.TypedTerm Syntax.Primary-primaryNoNewArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Primary"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "noNewArray"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the arrayAccess variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionArrayAccess :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionArrayAccess x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrayAccess"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classInstance variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionClassInstance :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionClassInstance x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classInstance"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classLiteral variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionClassLiteral :: Typed.TypedTerm Syntax.ClassLiteral -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionClassLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classLiteral"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the dotThis variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionDotThis :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionDotThis x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "dotThis"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the fieldAccess variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionFieldAccess x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "fieldAccess"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the literal variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionLiteral x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "literal"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the methodInvocation variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionMethodInvocation :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionMethodInvocation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "methodInvocation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the methodReference variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionMethodReference :: Typed.TypedTerm Syntax.MethodReference -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionMethodReference x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "methodReference"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the parens variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionParens :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionParens x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "parens"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionPrimaryNoNewArrayExpression :: Typed.TypedName Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionPrimaryNoNewArrayExpression =-    Typed.TypedName (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression")---- | DSL injection for the this variant of hydra.java.syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionThis :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression-primaryNoNewArrayExpressionThis =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "this"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.Primary-primaryPrimary :: Typed.TypedName Syntax.Primary-primaryPrimary = Typed.TypedName (Core.Name "hydra.java.syntax.Primary")---- | DSL injection for the boolean variant of hydra.java.syntax.PrimitiveType-primitiveTypeBoolean :: Typed.TypedTerm Syntax.PrimitiveType-primitiveTypeBoolean =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "boolean"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the numeric variant of hydra.java.syntax.PrimitiveType-primitiveTypeNumeric :: Typed.TypedTerm Syntax.NumericType -> Typed.TypedTerm Syntax.PrimitiveType-primitiveTypeNumeric x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "numeric"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.PrimitiveType-primitiveTypePrimitiveType :: Typed.TypedName Syntax.PrimitiveType-primitiveTypePrimitiveType = Typed.TypedName (Core.Name "hydra.java.syntax.PrimitiveType")---- | DSL constructor for hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotations :: Typed.TypedTerm Syntax.PrimitiveType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotations type_ annotations =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsAnnotations :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Annotation]-primitiveTypeWithAnnotationsAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations :: Typed.TypedName Syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations =-    Typed.TypedName (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations")---- | DSL accessor for the type field of hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsType :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.PrimitiveType-primitiveTypeWithAnnotationsType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsWithAnnotations :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsWithType :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.PrimitiveType -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations-primitiveTypeWithAnnotationsWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.ReceiverParameter-receiverParameter :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ReceiverParameter-receiverParameter annotations unannType identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Typed.unTypedTerm unannType)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.ReceiverParameter-receiverParameterAnnotations :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm [Syntax.Annotation]-receiverParameterAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.ReceiverParameter-receiverParameterIdentifier :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm (Maybe Syntax.Identifier)-receiverParameterIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ReceiverParameter-receiverParameterReceiverParameter :: Typed.TypedName Syntax.ReceiverParameter-receiverParameterReceiverParameter = Typed.TypedName (Core.Name "hydra.java.syntax.ReceiverParameter")---- | DSL accessor for the unannType field of hydra.java.syntax.ReceiverParameter-receiverParameterUnannType :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm Syntax.UnannType-receiverParameterUnannType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-        Core.projectionFieldName = (Core.Name "unannType")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.ReceiverParameter-receiverParameterWithAnnotations :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ReceiverParameter-receiverParameterWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "unannType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.ReceiverParameter-receiverParameterWithIdentifier :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ReceiverParameter-receiverParameterWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "unannType")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the unannType field of hydra.java.syntax.ReceiverParameter-receiverParameterWithUnannType :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.ReceiverParameter-receiverParameterWithUnannType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "unannType"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ReceiverParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.RecordBody wrapper-recordBody :: Typed.TypedTerm [Syntax.RecordBodyDeclaration] -> Typed.TypedTerm Syntax.RecordBody-recordBody x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.RecordBody"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL injection for the classBody variant of hydra.java.syntax.RecordBodyDeclaration-recordBodyDeclarationClassBody :: Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm Syntax.RecordBodyDeclaration-recordBodyDeclarationClassBody x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RecordBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classBody"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the compactConstructor variant of hydra.java.syntax.RecordBodyDeclaration-recordBodyDeclarationCompactConstructor :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.RecordBodyDeclaration-recordBodyDeclarationCompactConstructor x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RecordBodyDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "compactConstructor"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.RecordBodyDeclaration-recordBodyDeclarationRecordBodyDeclaration :: Typed.TypedName Syntax.RecordBodyDeclaration-recordBodyDeclarationRecordBodyDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.RecordBodyDeclaration")---- | DSL name token for hydra.java.syntax.RecordBody-recordBodyRecordBody :: Typed.TypedName Syntax.RecordBody-recordBodyRecordBody = Typed.TypedName (Core.Name "hydra.java.syntax.RecordBody")---- | DSL constructor for the hydra.java.syntax.RecordComponentModifier wrapper-recordComponentModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.RecordComponentModifier-recordComponentModifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.RecordComponentModifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RecordComponentModifier-recordComponentModifierRecordComponentModifier :: Typed.TypedName Syntax.RecordComponentModifier-recordComponentModifierRecordComponentModifier = Typed.TypedName (Core.Name "hydra.java.syntax.RecordComponentModifier")---- | DSL name token for hydra.java.syntax.RecordComponent-recordComponentRecordComponent :: Typed.TypedName Syntax.RecordComponent-recordComponentRecordComponent = Typed.TypedName (Core.Name "hydra.java.syntax.RecordComponent")---- | DSL injection for the simple variant of hydra.java.syntax.RecordComponent-recordComponentSimple :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.RecordComponent-recordComponentSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the variableArity variant of hydra.java.syntax.RecordComponent-recordComponentVariableArity :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.RecordComponent-recordComponentVariableArity x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variableArity"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.RecordComponent_Simple-recordComponent_Simple :: Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.RecordComponent_Simple-recordComponent_Simple modifiers type_ identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleIdentifier :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.Identifier-recordComponent_SimpleIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleModifiers :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm [Syntax.RecordComponentModifier]-recordComponent_SimpleModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleRecordComponent_Simple :: Typed.TypedName Syntax.RecordComponent_Simple-recordComponent_SimpleRecordComponent_Simple = Typed.TypedName (Core.Name "hydra.java.syntax.RecordComponent_Simple")---- | DSL accessor for the type field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleType :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.UnannType-recordComponent_SimpleType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleWithIdentifier :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.RecordComponent_Simple-recordComponent_SimpleWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleWithModifiers :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.RecordComponent_Simple-recordComponent_SimpleWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.RecordComponent_Simple-recordComponent_SimpleWithType :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.RecordComponent_Simple-recordComponent_SimpleWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordComponent_Simple"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.RecordDeclaration-recordDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclaration modifiers identifier parameters header implements body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm parameters)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Typed.unTypedTerm header)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Typed.unTypedTerm implements)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.RecordDeclaration-recordDeclarationBody :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordBody-recordDeclarationBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the header field of hydra.java.syntax.RecordDeclaration-recordDeclarationHeader :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordHeader-recordDeclarationHeader x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "header")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.RecordDeclaration-recordDeclarationIdentifier :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier-recordDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the implements field of hydra.java.syntax.RecordDeclaration-recordDeclarationImplements :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]-recordDeclarationImplements x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "implements")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.RecordDeclaration-recordDeclarationModifiers :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]-recordDeclarationModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the parameters field of hydra.java.syntax.RecordDeclaration-recordDeclarationParameters :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]-recordDeclarationParameters x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-        Core.projectionFieldName = (Core.Name "parameters")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RecordDeclaration-recordDeclarationRecordDeclaration :: Typed.TypedName Syntax.RecordDeclaration-recordDeclarationRecordDeclaration = Typed.TypedName (Core.Name "hydra.java.syntax.RecordDeclaration")---- | DSL updater for the body field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithBody :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the header field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithHeader :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithHeader original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithIdentifier :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the implements field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithImplements :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithImplements original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithModifiers :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "parameters")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the parameters field of hydra.java.syntax.RecordDeclaration-recordDeclarationWithParameters :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.RecordDeclaration-recordDeclarationWithParameters original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "parameters"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "header"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "header")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "implements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "implements")})),-            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.java.syntax.RecordDeclaration"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.RecordHeader wrapper-recordHeader :: Typed.TypedTerm [Syntax.RecordComponent] -> Typed.TypedTerm Syntax.RecordHeader-recordHeader x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.RecordHeader"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RecordHeader-recordHeaderRecordHeader :: Typed.TypedName Syntax.RecordHeader-recordHeaderRecordHeader = Typed.TypedName (Core.Name "hydra.java.syntax.RecordHeader")---- | DSL constructor for hydra.java.syntax.RecordPattern-recordPattern :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.RecordPattern-recordPattern type_ patterns =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "patterns"),-          Core.fieldTerm = (Typed.unTypedTerm patterns)}]}))---- | DSL accessor for the patterns field of hydra.java.syntax.RecordPattern-recordPatternPatterns :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.Pattern]-recordPatternPatterns x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-        Core.projectionFieldName = (Core.Name "patterns")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RecordPattern-recordPatternRecordPattern :: Typed.TypedName Syntax.RecordPattern-recordPatternRecordPattern = Typed.TypedName (Core.Name "hydra.java.syntax.RecordPattern")---- | DSL accessor for the type field of hydra.java.syntax.RecordPattern-recordPatternType :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.ReferenceType-recordPatternType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the patterns field of hydra.java.syntax.RecordPattern-recordPatternWithPatterns :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.RecordPattern-recordPatternWithPatterns original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "patterns"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.RecordPattern-recordPatternWithType :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.RecordPattern-recordPatternWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "patterns"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RecordPattern"),-              Core.projectionFieldName = (Core.Name "patterns")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the array variant of hydra.java.syntax.ReferenceType-referenceTypeArray :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ReferenceType-referenceTypeArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ReferenceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classOrInterface variant of hydra.java.syntax.ReferenceType-referenceTypeClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ReferenceType-referenceTypeClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ReferenceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.ReferenceType-referenceTypeReferenceType :: Typed.TypedName Syntax.ReferenceType-referenceTypeReferenceType = Typed.TypedName (Core.Name "hydra.java.syntax.ReferenceType")---- | DSL injection for the variable variant of hydra.java.syntax.ReferenceType-referenceTypeVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ReferenceType-referenceTypeVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ReferenceType"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the greaterThan variant of hydra.java.syntax.RelationalExpression-relationalExpressionGreaterThan :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionGreaterThan x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "greaterThan"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the greaterThanEqual variant of hydra.java.syntax.RelationalExpression-relationalExpressionGreaterThanEqual :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionGreaterThanEqual x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "greaterThanEqual"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the instanceofExpression variant of hydra.java.syntax.RelationalExpression-relationalExpressionInstanceofExpression :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionInstanceofExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "instanceofExpression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lessThan variant of hydra.java.syntax.RelationalExpression-relationalExpressionLessThan :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionLessThan x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lessThan"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the lessThanEqual variant of hydra.java.syntax.RelationalExpression-relationalExpressionLessThanEqual :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionLessThanEqual x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "lessThanEqual"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.RelationalExpression-relationalExpressionRelationalExpression :: Typed.TypedName Syntax.RelationalExpression-relationalExpressionRelationalExpression = Typed.TypedName (Core.Name "hydra.java.syntax.RelationalExpression")---- | DSL injection for the simple variant of hydra.java.syntax.RelationalExpression-relationalExpressionSimple :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpressionSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThan :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThan lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL constructor for hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqual :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqual lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpression_GreaterThanEqualLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual :: Typed.TypedName Syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual =-    Typed.TypedName (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual")---- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.ShiftExpression-relationalExpression_GreaterThanEqualRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual-relationalExpression_GreaterThanEqualWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpression_GreaterThanLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanRelationalExpression_GreaterThan :: Typed.TypedName Syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanRelationalExpression_GreaterThan =-    Typed.TypedName (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan")---- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.ShiftExpression-relationalExpression_GreaterThanRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan-relationalExpression_GreaterThanWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThan :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan-relationalExpression_LessThan lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL constructor for hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqual :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqual lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpression_LessThanEqualLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualRelationalExpression_LessThanEqual :: Typed.TypedName Syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualRelationalExpression_LessThanEqual =-    Typed.TypedName (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual")---- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.ShiftExpression-relationalExpression_LessThanEqualRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual-relationalExpression_LessThanEqualWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThanLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression-relationalExpression_LessThanLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThanRelationalExpression_LessThan :: Typed.TypedName Syntax.RelationalExpression_LessThan-relationalExpression_LessThanRelationalExpression_LessThan =-    Typed.TypedName (Core.Name "hydra.java.syntax.RelationalExpression_LessThan")---- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThanRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.ShiftExpression-relationalExpression_LessThanRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThanWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan-relationalExpression_LessThanWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_LessThan-relationalExpression_LessThanWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan-relationalExpression_LessThanWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.RelationalExpression_LessThan"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.RequiresModifier-requiresModifierRequiresModifier :: Typed.TypedName Syntax.RequiresModifier-requiresModifierRequiresModifier = Typed.TypedName (Core.Name "hydra.java.syntax.RequiresModifier")---- | DSL injection for the static variant of hydra.java.syntax.RequiresModifier-requiresModifierStatic :: Typed.TypedTerm Syntax.RequiresModifier-requiresModifierStatic =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RequiresModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "static"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the transitive variant of hydra.java.syntax.RequiresModifier-requiresModifierTransitive :: Typed.TypedTerm Syntax.RequiresModifier-requiresModifierTransitive =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.RequiresModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "transitive"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the local variant of hydra.java.syntax.Resource-resourceLocal :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Resource-resourceLocal x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Resource"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "local"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.Resource-resourceResource :: Typed.TypedName Syntax.Resource-resourceResource = Typed.TypedName (Core.Name "hydra.java.syntax.Resource")---- | DSL constructor for the hydra.java.syntax.ResourceSpecification wrapper-resourceSpecification :: Typed.TypedTerm [Syntax.Resource] -> Typed.TypedTerm Syntax.ResourceSpecification-resourceSpecification x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ResourceSpecification"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ResourceSpecification-resourceSpecificationResourceSpecification :: Typed.TypedName Syntax.ResourceSpecification-resourceSpecificationResourceSpecification = Typed.TypedName (Core.Name "hydra.java.syntax.ResourceSpecification")---- | DSL injection for the variable variant of hydra.java.syntax.Resource-resourceVariable :: Typed.TypedTerm Syntax.VariableAccess -> Typed.TypedTerm Syntax.Resource-resourceVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Resource"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.Resource_Local-resource_Local :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Resource_Local-resource_Local modifiers type_ identifier expression =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)}]}))---- | DSL accessor for the expression field of hydra.java.syntax.Resource_Local-resource_LocalExpression :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Expression-resource_LocalExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.Resource_Local-resource_LocalIdentifier :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Identifier-resource_LocalIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.Resource_Local-resource_LocalModifiers :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm [Syntax.VariableModifier]-resource_LocalModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Resource_Local-resource_LocalResource_Local :: Typed.TypedName Syntax.Resource_Local-resource_LocalResource_Local = Typed.TypedName (Core.Name "hydra.java.syntax.Resource_Local")---- | DSL accessor for the type field of hydra.java.syntax.Resource_Local-resource_LocalType :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.LocalVariableType-resource_LocalType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the expression field of hydra.java.syntax.Resource_Local-resource_LocalWithExpression :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Resource_Local-resource_LocalWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.Resource_Local-resource_LocalWithIdentifier :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Resource_Local-resource_LocalWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.Resource_Local-resource_LocalWithModifiers :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.Resource_Local-resource_LocalWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.Resource_Local-resource_LocalWithType :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.Resource_Local-resource_LocalWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Resource_Local"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.Result-resultResult :: Typed.TypedName Syntax.Result-resultResult = Typed.TypedName (Core.Name "hydra.java.syntax.Result")---- | DSL injection for the type variant of hydra.java.syntax.Result-resultType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Result-resultType x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Result"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "type"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the void variant of hydra.java.syntax.Result-resultVoid :: Typed.TypedTerm Syntax.Result-resultVoid =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Result"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "void"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL constructor for the hydra.java.syntax.ReturnStatement wrapper-returnStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ReturnStatement-returnStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.ReturnStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ReturnStatement-returnStatementReturnStatement :: Typed.TypedName Syntax.ReturnStatement-returnStatementReturnStatement = Typed.TypedName (Core.Name "hydra.java.syntax.ReturnStatement")---- | DSL name token for hydra.java.syntax.ShiftExpression-shiftExpressionShiftExpression :: Typed.TypedName Syntax.ShiftExpression-shiftExpressionShiftExpression = Typed.TypedName (Core.Name "hydra.java.syntax.ShiftExpression")---- | DSL injection for the shiftLeft variant of hydra.java.syntax.ShiftExpression-shiftExpressionShiftLeft :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression-shiftExpressionShiftLeft x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftLeft"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the shiftRight variant of hydra.java.syntax.ShiftExpression-shiftExpressionShiftRight :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression-shiftExpressionShiftRight x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftRight"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the shiftRightZeroFill variant of hydra.java.syntax.ShiftExpression-shiftExpressionShiftRightZeroFill :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression-shiftExpressionShiftRightZeroFill x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "shiftRightZeroFill"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the unary variant of hydra.java.syntax.ShiftExpression-shiftExpressionUnary :: Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression-shiftExpressionUnary x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "unary"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.ShiftExpression_Binary-shiftExpression_Binary :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary-shiftExpression_Binary lhs rhs =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm lhs)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm rhs)}]}))---- | DSL accessor for the lhs field of hydra.java.syntax.ShiftExpression_Binary-shiftExpression_BinaryLhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression-shiftExpression_BinaryLhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-        Core.projectionFieldName = (Core.Name "lhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the rhs field of hydra.java.syntax.ShiftExpression_Binary-shiftExpression_BinaryRhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression-shiftExpression_BinaryRhs x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-        Core.projectionFieldName = (Core.Name "rhs")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ShiftExpression_Binary-shiftExpression_BinaryShiftExpression_Binary :: Typed.TypedName Syntax.ShiftExpression_Binary-shiftExpression_BinaryShiftExpression_Binary = Typed.TypedName (Core.Name "hydra.java.syntax.ShiftExpression_Binary")---- | DSL updater for the lhs field of hydra.java.syntax.ShiftExpression_Binary-shiftExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary-shiftExpression_BinaryWithLhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-              Core.projectionFieldName = (Core.Name "rhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the rhs field of hydra.java.syntax.ShiftExpression_Binary-shiftExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary-shiftExpression_BinaryWithRhs original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "lhs"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.ShiftExpression_Binary"),-              Core.projectionFieldName = (Core.Name "lhs")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "rhs"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.SimpleTypeName wrapper-simpleTypeName :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.SimpleTypeName-simpleTypeName x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.SimpleTypeName"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SimpleTypeName-simpleTypeNameSimpleTypeName :: Typed.TypedName Syntax.SimpleTypeName-simpleTypeNameSimpleTypeName = Typed.TypedName (Core.Name "hydra.java.syntax.SimpleTypeName")---- | DSL constructor for hydra.java.syntax.SingleElementAnnotation-singleElementAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.ElementValue) -> Typed.TypedTerm Syntax.SingleElementAnnotation-singleElementAnnotation name value =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm name)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)}]}))---- | DSL accessor for the name field of hydra.java.syntax.SingleElementAnnotation-singleElementAnnotationName :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.TypeName-singleElementAnnotationName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-        Core.projectionFieldName = (Core.Name "name")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SingleElementAnnotation-singleElementAnnotationSingleElementAnnotation :: Typed.TypedName Syntax.SingleElementAnnotation-singleElementAnnotationSingleElementAnnotation = Typed.TypedName (Core.Name "hydra.java.syntax.SingleElementAnnotation")---- | DSL accessor for the value field of hydra.java.syntax.SingleElementAnnotation-singleElementAnnotationValue :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm (Maybe Syntax.ElementValue)-singleElementAnnotationValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the name field of hydra.java.syntax.SingleElementAnnotation-singleElementAnnotationWithName :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleElementAnnotation-singleElementAnnotationWithName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "name"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the value field of hydra.java.syntax.SingleElementAnnotation-singleElementAnnotationWithValue :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm (Maybe Syntax.ElementValue) -> Typed.TypedTerm Syntax.SingleElementAnnotation-singleElementAnnotationWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleElementAnnotation"),-      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.java.syntax.SingleElementAnnotation"),-              Core.projectionFieldName = (Core.Name "name")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration-singleStaticImportDeclaration typeName identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Typed.unTypedTerm typeName)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the identifier field of hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationIdentifier :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.Identifier-singleStaticImportDeclarationIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationSingleStaticImportDeclaration :: Typed.TypedName Syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationSingleStaticImportDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration")---- | DSL accessor for the typeName field of hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationTypeName :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.TypeName-singleStaticImportDeclarationTypeName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-        Core.projectionFieldName = (Core.Name "typeName")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the identifier field of hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationWithIdentifier :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-              Core.projectionFieldName = (Core.Name "typeName")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the typeName field of hydra.java.syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationWithTypeName :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration-singleStaticImportDeclarationWithTypeName original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeName"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.SingleTypeImportDeclaration wrapper-singleTypeImportDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleTypeImportDeclaration-singleTypeImportDeclaration x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.SingleTypeImportDeclaration"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SingleTypeImportDeclaration-singleTypeImportDeclarationSingleTypeImportDeclaration :: Typed.TypedName Syntax.SingleTypeImportDeclaration-singleTypeImportDeclarationSingleTypeImportDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.SingleTypeImportDeclaration")---- | DSL injection for the assignment variant of hydra.java.syntax.StatementExpression-statementExpressionAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionAssignment x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assignment"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the classInstanceCreation variant of hydra.java.syntax.StatementExpression-statementExpressionClassInstanceCreation :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionClassInstanceCreation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classInstanceCreation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the methodInvocation variant of hydra.java.syntax.StatementExpression-statementExpressionMethodInvocation :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionMethodInvocation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "methodInvocation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the postDecrement variant of hydra.java.syntax.StatementExpression-statementExpressionPostDecrement :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionPostDecrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "postDecrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the postIncrement variant of hydra.java.syntax.StatementExpression-statementExpressionPostIncrement :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionPostIncrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "postIncrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the preDecrement variant of hydra.java.syntax.StatementExpression-statementExpressionPreDecrement :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionPreDecrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "preDecrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the preIncrement variant of hydra.java.syntax.StatementExpression-statementExpressionPreIncrement :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.StatementExpression-statementExpressionPreIncrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "preIncrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.StatementExpression-statementExpressionStatementExpression :: Typed.TypedName Syntax.StatementExpression-statementExpressionStatementExpression = Typed.TypedName (Core.Name "hydra.java.syntax.StatementExpression")---- | DSL injection for the for variant of hydra.java.syntax.Statement-statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement-statementFor x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "for"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ifThen variant of hydra.java.syntax.Statement-statementIfThen :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement-statementIfThen x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ifThen"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ifThenElse variant of hydra.java.syntax.Statement-statementIfThenElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement-statementIfThenElse x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ifThenElse"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the labeled variant of hydra.java.syntax.Statement-statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement-statementLabeled x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "labeled"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the for variant of hydra.java.syntax.StatementNoShortIf-statementNoShortIfFor :: Typed.TypedTerm Syntax.ForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-statementNoShortIfFor x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "for"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the ifThenElse variant of hydra.java.syntax.StatementNoShortIf-statementNoShortIfIfThenElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-statementNoShortIfIfThenElse x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "ifThenElse"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the labeled variant of hydra.java.syntax.StatementNoShortIf-statementNoShortIfLabeled :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-statementNoShortIfLabeled x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "labeled"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.StatementNoShortIf-statementNoShortIfStatementNoShortIf :: Typed.TypedName Syntax.StatementNoShortIf-statementNoShortIfStatementNoShortIf = Typed.TypedName (Core.Name "hydra.java.syntax.StatementNoShortIf")---- | DSL injection for the while variant of hydra.java.syntax.StatementNoShortIf-statementNoShortIfWhile :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-statementNoShortIfWhile x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "while"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the withoutTrailing variant of hydra.java.syntax.StatementNoShortIf-statementNoShortIfWithoutTrailing :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement -> Typed.TypedTerm Syntax.StatementNoShortIf-statementNoShortIfWithoutTrailing x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementNoShortIf"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "withoutTrailing"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.Statement-statementStatement :: Typed.TypedName Syntax.Statement-statementStatement = Typed.TypedName (Core.Name "hydra.java.syntax.Statement")---- | DSL injection for the while variant of hydra.java.syntax.Statement-statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement-statementWhile x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "while"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the withoutTrailing variant of hydra.java.syntax.Statement-statementWithoutTrailing :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement -> Typed.TypedTerm Syntax.Statement-statementWithoutTrailing x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Statement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "withoutTrailing"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the assert variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementAssert :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementAssert x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "assert"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the block variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the break variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementBreak x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "break"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the continue variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementContinue x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "continue"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the do variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementDo :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementDo x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "do"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the empty variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementEmpty :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementEmpty =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "empty"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the expression variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementExpression :: Typed.TypedTerm Syntax.ExpressionStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the return variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementReturn x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "return"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement :: Typed.TypedName Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement =-    Typed.TypedName (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement")---- | DSL injection for the switch variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementSwitch x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "switch"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the synchronized variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementSynchronized :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementSynchronized x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "synchronized"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the throw variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementThrow x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "throw"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the try variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementTry x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "try"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the yield variant of hydra.java.syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementYield :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement-statementWithoutTrailingSubstatementYield x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "yield"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for the hydra.java.syntax.StaticImportOnDemandDeclaration wrapper-staticImportOnDemandDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration-staticImportOnDemandDeclaration x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.StaticImportOnDemandDeclaration"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.StaticImportOnDemandDeclaration-staticImportOnDemandDeclarationStaticImportOnDemandDeclaration :: Typed.TypedName Syntax.StaticImportOnDemandDeclaration-staticImportOnDemandDeclarationStaticImportOnDemandDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.StaticImportOnDemandDeclaration")---- | DSL constructor for the hydra.java.syntax.StaticInitializer wrapper-staticInitializer :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.StaticInitializer-staticInitializer x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.StaticInitializer"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.StaticInitializer-staticInitializerStaticInitializer :: Typed.TypedName Syntax.StaticInitializer-staticInitializerStaticInitializer = Typed.TypedName (Core.Name "hydra.java.syntax.StaticInitializer")---- | DSL constructor for the hydra.java.syntax.StringLiteral wrapper-stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral-stringLiteral x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.StringLiteral"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.StringLiteral-stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral-stringLiteralStringLiteral = Typed.TypedName (Core.Name "hydra.java.syntax.StringLiteral")---- | DSL injection for the legacy variant of hydra.java.syntax.SwitchBlock-switchBlockLegacy :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm Syntax.SwitchBlock-switchBlockLegacy x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "legacy"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the rules variant of hydra.java.syntax.SwitchBlock-switchBlockRules :: Typed.TypedTerm [Syntax.SwitchRule] -> Typed.TypedTerm Syntax.SwitchBlock-switchBlockRules x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "rules"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroup :: Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup-switchBlockStatementGroup labels statements =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "labels"),-          Core.fieldTerm = (Typed.unTypedTerm labels)},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Typed.unTypedTerm statements)}]}))---- | DSL accessor for the labels field of hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroupLabels :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.SwitchLabel]-switchBlockStatementGroupLabels x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-        Core.projectionFieldName = (Core.Name "labels")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the statements field of hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroupStatements :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.BlockStatement]-switchBlockStatementGroupStatements x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-        Core.projectionFieldName = (Core.Name "statements")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroupSwitchBlockStatementGroup :: Typed.TypedName Syntax.SwitchBlockStatementGroup-switchBlockStatementGroupSwitchBlockStatementGroup =-    Typed.TypedName (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup")---- | DSL updater for the labels field of hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroupWithLabels :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup-switchBlockStatementGroupWithLabels original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "labels"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-              Core.projectionFieldName = (Core.Name "statements")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the statements field of hydra.java.syntax.SwitchBlockStatementGroup-switchBlockStatementGroupWithStatements :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup-switchBlockStatementGroupWithStatements original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "labels"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"),-              Core.projectionFieldName = (Core.Name "labels")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "statements"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL name token for hydra.java.syntax.SwitchBlock-switchBlockSwitchBlock :: Typed.TypedName Syntax.SwitchBlock-switchBlockSwitchBlock = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchBlock")---- | DSL constructor for hydra.java.syntax.SwitchBlock_Legacy-switchBlock_Legacy :: Typed.TypedTerm [Syntax.SwitchBlockStatementGroup] -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy-switchBlock_Legacy groups trailingLabels =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "groups"),-          Core.fieldTerm = (Typed.unTypedTerm groups)},-        Core.Field {-          Core.fieldName = (Core.Name "trailingLabels"),-          Core.fieldTerm = (Typed.unTypedTerm trailingLabels)}]}))---- | DSL accessor for the groups field of hydra.java.syntax.SwitchBlock_Legacy-switchBlock_LegacyGroups :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchBlockStatementGroup]-switchBlock_LegacyGroups x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-        Core.projectionFieldName = (Core.Name "groups")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SwitchBlock_Legacy-switchBlock_LegacySwitchBlock_Legacy :: Typed.TypedName Syntax.SwitchBlock_Legacy-switchBlock_LegacySwitchBlock_Legacy = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchBlock_Legacy")---- | DSL accessor for the trailingLabels field of hydra.java.syntax.SwitchBlock_Legacy-switchBlock_LegacyTrailingLabels :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchLabel]-switchBlock_LegacyTrailingLabels x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-        Core.projectionFieldName = (Core.Name "trailingLabels")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the groups field of hydra.java.syntax.SwitchBlock_Legacy-switchBlock_LegacyWithGroups :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchBlockStatementGroup] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy-switchBlock_LegacyWithGroups original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "groups"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "trailingLabels"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-              Core.projectionFieldName = (Core.Name "trailingLabels")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the trailingLabels field of hydra.java.syntax.SwitchBlock_Legacy-switchBlock_LegacyWithTrailingLabels :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy-switchBlock_LegacyWithTrailingLabels original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "groups"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchBlock_Legacy"),-              Core.projectionFieldName = (Core.Name "groups")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "trailingLabels"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.SwitchExpression-switchExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchExpression-switchExpression cond block =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)}]}))---- | DSL accessor for the block field of hydra.java.syntax.SwitchExpression-switchExpressionBlock :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.SwitchBlock-switchExpressionBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.SwitchExpression-switchExpressionCond :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.Expression-switchExpressionCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SwitchExpression-switchExpressionSwitchExpression :: Typed.TypedName Syntax.SwitchExpression-switchExpressionSwitchExpression = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchExpression")---- | DSL updater for the block field of hydra.java.syntax.SwitchExpression-switchExpressionWithBlock :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchExpression-switchExpressionWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.SwitchExpression-switchExpressionWithCond :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchExpression-switchExpressionWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchExpression"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the case variant of hydra.java.syntax.SwitchLabel-switchLabelCase :: Typed.TypedTerm [Syntax.CaseConstant] -> Typed.TypedTerm Syntax.SwitchLabel-switchLabelCase x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchLabel"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "case"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the casePattern variant of hydra.java.syntax.SwitchLabel-switchLabelCasePattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.SwitchLabel-switchLabelCasePattern x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchLabel"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "casePattern"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the default variant of hydra.java.syntax.SwitchLabel-switchLabelDefault :: Typed.TypedTerm Syntax.SwitchLabel-switchLabelDefault =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchLabel"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "default"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL injection for the null variant of hydra.java.syntax.SwitchLabel-switchLabelNull :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.SwitchLabel-switchLabelNull x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchLabel"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "null"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.SwitchLabel-switchLabelSwitchLabel :: Typed.TypedName Syntax.SwitchLabel-switchLabelSwitchLabel = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchLabel")---- | DSL constructor for hydra.java.syntax.SwitchRule-switchRule :: Typed.TypedTerm Syntax.SwitchLabel -> Typed.TypedTerm Syntax.SwitchRule_Body -> Typed.TypedTerm Syntax.SwitchRule-switchRule label body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchRule"),-      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.java.syntax.SwitchRule-switchRuleBody :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchRule_Body-switchRuleBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchRule"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the label field of hydra.java.syntax.SwitchRule-switchRuleLabel :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchLabel-switchRuleLabel x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchRule"),-        Core.projectionFieldName = (Core.Name "label")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SwitchRule-switchRuleSwitchRule :: Typed.TypedName Syntax.SwitchRule-switchRuleSwitchRule = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchRule")---- | DSL updater for the body field of hydra.java.syntax.SwitchRule-switchRuleWithBody :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchRule_Body -> Typed.TypedTerm Syntax.SwitchRule-switchRuleWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchRule"),-      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.java.syntax.SwitchRule"),-              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.java.syntax.SwitchRule-switchRuleWithLabel :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchLabel -> Typed.TypedTerm Syntax.SwitchRule-switchRuleWithLabel original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchRule"),-      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.java.syntax.SwitchRule"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the block variant of hydra.java.syntax.SwitchRule_Body-switchRule_BodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SwitchRule_Body-switchRule_BodyBlock x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchRule_Body"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "block"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.java.syntax.SwitchRule_Body-switchRule_BodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchRule_Body-switchRule_BodyExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchRule_Body"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.SwitchRule_Body-switchRule_BodySwitchRule_Body :: Typed.TypedName Syntax.SwitchRule_Body-switchRule_BodySwitchRule_Body = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchRule_Body")---- | DSL injection for the throw variant of hydra.java.syntax.SwitchRule_Body-switchRule_BodyThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.SwitchRule_Body-switchRule_BodyThrow x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.SwitchRule_Body"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "throw"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.SwitchStatement-switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchStatement-switchStatement cond block =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)}]}))---- | DSL accessor for the block field of hydra.java.syntax.SwitchStatement-switchStatementBlock :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.SwitchBlock-switchStatementBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.SwitchStatement-switchStatementCond :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression-switchStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SwitchStatement-switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement-switchStatementSwitchStatement = Typed.TypedName (Core.Name "hydra.java.syntax.SwitchStatement")---- | DSL updater for the block field of hydra.java.syntax.SwitchStatement-switchStatementWithBlock :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.SwitchStatement-switchStatementWithCond :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement-switchStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SwitchStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.SynchronizedStatement-synchronizedStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SynchronizedStatement-synchronizedStatement expression block =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm expression)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)}]}))---- | DSL accessor for the block field of hydra.java.syntax.SynchronizedStatement-synchronizedStatementBlock :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Block-synchronizedStatementBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the expression field of hydra.java.syntax.SynchronizedStatement-synchronizedStatementExpression :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Expression-synchronizedStatementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-        Core.projectionFieldName = (Core.Name "expression")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.SynchronizedStatement-synchronizedStatementSynchronizedStatement :: Typed.TypedName Syntax.SynchronizedStatement-synchronizedStatementSynchronizedStatement = Typed.TypedName (Core.Name "hydra.java.syntax.SynchronizedStatement")---- | DSL updater for the block field of hydra.java.syntax.SynchronizedStatement-synchronizedStatementWithBlock :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SynchronizedStatement-synchronizedStatementWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-      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.java.syntax.SynchronizedStatement"),-              Core.projectionFieldName = (Core.Name "expression")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the expression field of hydra.java.syntax.SynchronizedStatement-synchronizedStatementWithExpression :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SynchronizedStatement-synchronizedStatementWithExpression original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "expression"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.SynchronizedStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.TextBlock wrapper-textBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.TextBlock-textBlock x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.TextBlock"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TextBlock-textBlockTextBlock :: Typed.TypedName Syntax.TextBlock-textBlockTextBlock = Typed.TypedName (Core.Name "hydra.java.syntax.TextBlock")---- | DSL constructor for the hydra.java.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.java.syntax.ThrowStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.ThrowStatement-throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement-throwStatementThrowStatement = Typed.TypedName (Core.Name "hydra.java.syntax.ThrowStatement")---- | DSL constructor for the hydra.java.syntax.Throws wrapper-throws :: Typed.TypedTerm [Syntax.ExceptionType] -> Typed.TypedTerm Syntax.Throws-throws x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.Throws"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.Throws-throwsThrows :: Typed.TypedName Syntax.Throws-throwsThrows = Typed.TypedName (Core.Name "hydra.java.syntax.Throws")---- | DSL injection for the class variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationClass x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "class"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the interface variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "interface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the none variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationNone :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationNone =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "none"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration :: Typed.TypedName Syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration")---- | DSL constructor for hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithComments value comments =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          Core.fieldTerm = (Typed.unTypedTerm value)},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm comments)}]}))---- | DSL accessor for the comments field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm (Maybe String)-topLevelClassOrInterfaceDeclarationWithCommentsComments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "comments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments :: Typed.TypedName Syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments =-    Typed.TypedName (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments")---- | DSL accessor for the value field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration-topLevelClassOrInterfaceDeclarationWithCommentsValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-        Core.projectionFieldName = (Core.Name "value")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the comments field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsWithComments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-      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.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "value")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "comments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the value field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments-topLevelClassOrInterfaceDeclarationWithCommentsWithValue original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "value"),-          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.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),-              Core.projectionFieldName = (Core.Name "comments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the simple variant of hydra.java.syntax.TryStatement-tryStatementSimple :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.TryStatement-tryStatementSimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TryStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.TryStatement-tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement-tryStatementTryStatement = Typed.TypedName (Core.Name "hydra.java.syntax.TryStatement")---- | DSL injection for the withFinally variant of hydra.java.syntax.TryStatement-tryStatementWithFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithFinally x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TryStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "withFinally"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the withResources variant of hydra.java.syntax.TryStatement-tryStatementWithResources :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.TryStatement-tryStatementWithResources x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TryStatement"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "withResources"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.TryStatement_Simple-tryStatement_Simple :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm Syntax.TryStatement_Simple-tryStatement_Simple block catches =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm catches)}]}))---- | DSL accessor for the block field of hydra.java.syntax.TryStatement_Simple-tryStatement_SimpleBlock :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Block-tryStatement_SimpleBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the catches field of hydra.java.syntax.TryStatement_Simple-tryStatement_SimpleCatches :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Catches-tryStatement_SimpleCatches x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-        Core.projectionFieldName = (Core.Name "catches")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TryStatement_Simple-tryStatement_SimpleTryStatement_Simple :: Typed.TypedName Syntax.TryStatement_Simple-tryStatement_SimpleTryStatement_Simple = Typed.TypedName (Core.Name "hydra.java.syntax.TryStatement_Simple")---- | DSL updater for the block field of hydra.java.syntax.TryStatement_Simple-tryStatement_SimpleWithBlock :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryStatement_Simple-tryStatement_SimpleWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the catches field of hydra.java.syntax.TryStatement_Simple-tryStatement_SimpleWithCatches :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm Syntax.TryStatement_Simple-tryStatement_SimpleWithCatches original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_Simple"),-      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.java.syntax.TryStatement_Simple"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinally :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.TryStatement_WithFinally-tryStatement_WithFinally block catches finally =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm catches)},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Typed.unTypedTerm finally)}]}))---- | DSL accessor for the block field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyBlock :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Block-tryStatement_WithFinallyBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the catches field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyCatches :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm (Maybe Syntax.Catches)-tryStatement_WithFinallyCatches x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-        Core.projectionFieldName = (Core.Name "catches")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the finally field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Finally-tryStatement_WithFinallyFinally x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-        Core.projectionFieldName = (Core.Name "finally")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyTryStatement_WithFinally :: Typed.TypedName Syntax.TryStatement_WithFinally-tryStatement_WithFinallyTryStatement_WithFinally =-    Typed.TypedName (Core.Name "hydra.java.syntax.TryStatement_WithFinally")---- | DSL updater for the block field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithBlock :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "finally")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the catches field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithCatches :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithCatches original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-      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.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "finally")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the finally field of hydra.java.syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.TryStatement_WithFinally-tryStatement_WithFinallyWithFinally original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-      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.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryStatement_WithFinally"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatement :: Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm (Maybe Syntax.Finally) -> Typed.TypedTerm Syntax.TryWithResourcesStatement-tryWithResourcesStatement resourceSpecification block catches finally =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "resourceSpecification"),-          Core.fieldTerm = (Typed.unTypedTerm resourceSpecification)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm block)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm catches)},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Typed.unTypedTerm finally)}]}))---- | DSL accessor for the block field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementBlock :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.Block-tryWithResourcesStatementBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-        Core.projectionFieldName = (Core.Name "block")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the catches field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementCatches :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Catches)-tryWithResourcesStatementCatches x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-        Core.projectionFieldName = (Core.Name "catches")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the finally field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementFinally :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Finally)-tryWithResourcesStatementFinally x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-        Core.projectionFieldName = (Core.Name "finally")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the resourceSpecification field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementResourceSpecification :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.ResourceSpecification-tryWithResourcesStatementResourceSpecification x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-        Core.projectionFieldName = (Core.Name "resourceSpecification")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementTryWithResourcesStatement :: Typed.TypedName Syntax.TryWithResourcesStatement-tryWithResourcesStatementTryWithResourcesStatement =-    Typed.TypedName (Core.Name "hydra.java.syntax.TryWithResourcesStatement")---- | DSL updater for the block field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementWithBlock :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryWithResourcesStatement-tryWithResourcesStatementWithBlock original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "resourceSpecification"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "resourceSpecification")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "finally")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the catches field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementWithCatches :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.TryWithResourcesStatement-tryWithResourcesStatementWithCatches original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "resourceSpecification"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "resourceSpecification")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "finally")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the finally field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementWithFinally :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Finally) -> Typed.TypedTerm Syntax.TryWithResourcesStatement-tryWithResourcesStatementWithFinally original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "resourceSpecification"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "resourceSpecification")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the resourceSpecification field of hydra.java.syntax.TryWithResourcesStatement-tryWithResourcesStatementWithResourceSpecification :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm Syntax.TryWithResourcesStatement-tryWithResourcesStatementWithResourceSpecification original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "resourceSpecification"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "block"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "block")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "catches"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "catches")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "finally"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TryWithResourcesStatement"),-              Core.projectionFieldName = (Core.Name "finally")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the reference variant of hydra.java.syntax.TypeArgument-typeArgumentReference :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.TypeArgument-typeArgumentReference x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeArgument"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "reference"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.TypeArgument-typeArgumentTypeArgument :: Typed.TypedName Syntax.TypeArgument-typeArgumentTypeArgument = Typed.TypedName (Core.Name "hydra.java.syntax.TypeArgument")---- | DSL injection for the wildcard variant of hydra.java.syntax.TypeArgument-typeArgumentWildcard :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm Syntax.TypeArgument-typeArgumentWildcard x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeArgument"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "wildcard"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the arguments variant of hydra.java.syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondArguments :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondArguments x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeArgumentsOrDiamond"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arguments"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the diamond variant of hydra.java.syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondDiamond :: Typed.TypedTerm Syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondDiamond =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeArgumentsOrDiamond"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "diamond"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondTypeArgumentsOrDiamond :: Typed.TypedName Syntax.TypeArgumentsOrDiamond-typeArgumentsOrDiamondTypeArgumentsOrDiamond = Typed.TypedName (Core.Name "hydra.java.syntax.TypeArgumentsOrDiamond")---- | DSL injection for the classOrInterface variant of hydra.java.syntax.TypeBound-typeBoundClassOrInterface :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.TypeBound-typeBoundClassOrInterface x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeBound"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "classOrInterface"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.TypeBound-typeBoundTypeBound :: Typed.TypedName Syntax.TypeBound-typeBoundTypeBound = Typed.TypedName (Core.Name "hydra.java.syntax.TypeBound")---- | DSL injection for the variable variant of hydra.java.syntax.TypeBound-typeBoundVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeBound-typeBoundVariable x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeBound"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "variable"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL constructor for hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterface type_ additional =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "additional"),-          Core.fieldTerm = (Typed.unTypedTerm additional)}]}))---- | DSL accessor for the additional field of hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceAdditional :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm [Syntax.AdditionalBound]-typeBound_ClassOrInterfaceAdditional x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "additional")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceType :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType-typeBound_ClassOrInterfaceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceTypeBound_ClassOrInterface :: Typed.TypedName Syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceTypeBound_ClassOrInterface =-    Typed.TypedName (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface")---- | DSL updater for the additional field of hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceWithAdditional :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceWithAdditional original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "additional"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the type field of hydra.java.syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface-typeBound_ClassOrInterfaceWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "additional"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),-              Core.projectionFieldName = (Core.Name "additional")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.TypeIdentifier wrapper-typeIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeIdentifier-typeIdentifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.TypeIdentifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeIdentifier-typeIdentifierTypeIdentifier :: Typed.TypedName Syntax.TypeIdentifier-typeIdentifierTypeIdentifier = Typed.TypedName (Core.Name "hydra.java.syntax.TypeIdentifier")---- | DSL constructor for the hydra.java.syntax.TypeImportOnDemandDeclaration wrapper-typeImportOnDemandDeclaration :: Typed.TypedTerm Syntax.PackageOrTypeName -> Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration-typeImportOnDemandDeclaration x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.TypeImportOnDemandDeclaration"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeImportOnDemandDeclaration-typeImportOnDemandDeclarationTypeImportOnDemandDeclaration :: Typed.TypedName Syntax.TypeImportOnDemandDeclaration-typeImportOnDemandDeclarationTypeImportOnDemandDeclaration =-    Typed.TypedName (Core.Name "hydra.java.syntax.TypeImportOnDemandDeclaration")---- | DSL constructor for hydra.java.syntax.TypeName-typeName :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName) -> Typed.TypedTerm Syntax.TypeName-typeName identifier qualifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm qualifier)}]}))---- | DSL injection for the array variant of hydra.java.syntax.TypeNameArray-typeNameArrayArray :: Typed.TypedTerm Syntax.TypeNameArray -> Typed.TypedTerm Syntax.TypeNameArray-typeNameArrayArray x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeNameArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "array"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the simple variant of hydra.java.syntax.TypeNameArray-typeNameArraySimple :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeNameArray-typeNameArraySimple x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.TypeNameArray"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "simple"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.TypeNameArray-typeNameArrayTypeNameArray :: Typed.TypedName Syntax.TypeNameArray-typeNameArrayTypeNameArray = Typed.TypedName (Core.Name "hydra.java.syntax.TypeNameArray")---- | DSL accessor for the identifier field of hydra.java.syntax.TypeName-typeNameIdentifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeIdentifier-typeNameIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeName"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the qualifier field of hydra.java.syntax.TypeName-typeNameQualifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName)-typeNameQualifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeName"),-        Core.projectionFieldName = (Core.Name "qualifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeName-typeNameTypeName :: Typed.TypedName Syntax.TypeName-typeNameTypeName = Typed.TypedName (Core.Name "hydra.java.syntax.TypeName")---- | DSL updater for the identifier field of hydra.java.syntax.TypeName-typeNameWithIdentifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeName-typeNameWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeName"),-              Core.projectionFieldName = (Core.Name "qualifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the qualifier field of hydra.java.syntax.TypeName-typeNameWithQualifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName) -> Typed.TypedTerm Syntax.TypeName-typeNameWithQualifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeName"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeName"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "qualifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for hydra.java.syntax.TypeParameter-typeParameter :: Typed.TypedTerm [Syntax.TypeParameterModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm (Maybe Syntax.TypeBound) -> Typed.TypedTerm Syntax.TypeParameter-typeParameter modifiers identifier bound =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "bound"),-          Core.fieldTerm = (Typed.unTypedTerm bound)}]}))---- | DSL accessor for the bound field of hydra.java.syntax.TypeParameter-typeParameterBound :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeBound)-typeParameterBound x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "bound")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.TypeParameter-typeParameterIdentifier :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.TypeIdentifier-typeParameterIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for the hydra.java.syntax.TypeParameterModifier wrapper-typeParameterModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.TypeParameterModifier-typeParameterModifier x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.TypeParameterModifier"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeParameterModifier-typeParameterModifierTypeParameterModifier :: Typed.TypedName Syntax.TypeParameterModifier-typeParameterModifierTypeParameterModifier = Typed.TypedName (Core.Name "hydra.java.syntax.TypeParameterModifier")---- | DSL accessor for the modifiers field of hydra.java.syntax.TypeParameter-typeParameterModifiers :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm [Syntax.TypeParameterModifier]-typeParameterModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeParameter-typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter-typeParameterTypeParameter = Typed.TypedName (Core.Name "hydra.java.syntax.TypeParameter")---- | DSL updater for the bound field of hydra.java.syntax.TypeParameter-typeParameterWithBound :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeBound) -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithBound original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "bound"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.TypeParameter-typeParameterWithIdentifier :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "bound"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "bound")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.TypeParameter-typeParameterWithModifiers :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm [Syntax.TypeParameterModifier] -> Typed.TypedTerm Syntax.TypeParameter-typeParameterWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "bound"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeParameter"),-              Core.projectionFieldName = (Core.Name "bound")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for the hydra.java.syntax.TypePattern wrapper-typePattern :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.TypePattern-typePattern x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.TypePattern"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypePattern-typePatternTypePattern :: Typed.TypedName Syntax.TypePattern-typePatternTypePattern = Typed.TypedName (Core.Name "hydra.java.syntax.TypePattern")---- | DSL injection for the primitive variant of hydra.java.syntax.Type-typePrimitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.Type-typePrimitive x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "primitive"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the reference variant of hydra.java.syntax.Type-typeReference :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.Type-typeReference x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.Type"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "reference"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.Type-typeType :: Typed.TypedName Syntax.Type-typeType = Typed.TypedName (Core.Name "hydra.java.syntax.Type")---- | DSL constructor for hydra.java.syntax.TypeVariable-typeVariable :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeVariable-typeVariable annotations identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.TypeVariable-typeVariableAnnotations :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm [Syntax.Annotation]-typeVariableAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.TypeVariable-typeVariableIdentifier :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeIdentifier-typeVariableIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.TypeVariable-typeVariableTypeVariable :: Typed.TypedName Syntax.TypeVariable-typeVariableTypeVariable = Typed.TypedName (Core.Name "hydra.java.syntax.TypeVariable")---- | DSL updater for the annotations field of hydra.java.syntax.TypeVariable-typeVariableWithAnnotations :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.TypeVariable-typeVariableWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.TypeVariable-typeVariableWithIdentifier :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeVariable-typeVariableWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.TypeVariable"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL accessor for the body of hydra.java.syntax.AdditionalBound-unAdditionalBound :: Typed.TypedTerm Syntax.AdditionalBound -> Typed.TypedTerm Syntax.InterfaceType-unAdditionalBound x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.AdditionalBound")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.AmbiguousName-unAmbiguousName :: Typed.TypedTerm Syntax.AmbiguousName -> Typed.TypedTerm [Syntax.Identifier]-unAmbiguousName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.AmbiguousName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.AndExpression-unAndExpression :: Typed.TypedTerm Syntax.AndExpression -> Typed.TypedTerm [Syntax.EqualityExpression]-unAndExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.AndExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.AnnotationInterfaceBody-unAnnotationInterfaceBody :: Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm [Syntax.AnnotationInterfaceMemberDeclaration]-unAnnotationInterfaceBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.AnnotationInterfaceBody")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ArrayInitializer-unArrayInitializer :: Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm [[Syntax.VariableInitializer]]-unArrayInitializer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ArrayInitializer")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Block-unBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.BlockStatement]-unBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Block")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.BreakStatement-unBreakStatement :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm (Maybe Syntax.Identifier)-unBreakStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.BreakStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.CaseConstant-unCaseConstant :: Typed.TypedTerm Syntax.CaseConstant -> Typed.TypedTerm Syntax.ConditionalExpression-unCaseConstant x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.CaseConstant")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Catches-unCatches :: Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm [Syntax.CatchClause]-unCatches x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Catches")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ClassBody-unClassBody :: Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm [Syntax.ClassBodyDeclarationWithComments]-unClassBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ClassBody")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ConditionalAndExpression-unConditionalAndExpression :: Typed.TypedTerm Syntax.ConditionalAndExpression -> Typed.TypedTerm [Syntax.InclusiveOrExpression]-unConditionalAndExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ConditionalAndExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ConditionalOrExpression-unConditionalOrExpression :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm [Syntax.ConditionalAndExpression]-unConditionalOrExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ConditionalOrExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ConstantExpression-unConstantExpression :: Typed.TypedTerm Syntax.ConstantExpression -> Typed.TypedTerm Syntax.Expression-unConstantExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ConstantExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ContinueStatement-unContinueStatement :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm (Maybe Syntax.Identifier)-unContinueStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ContinueStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.DefaultValue-unDefaultValue :: Typed.TypedTerm Syntax.DefaultValue -> Typed.TypedTerm Syntax.ElementValue-unDefaultValue x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.DefaultValue")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Dims-unDims :: Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm [[Syntax.Annotation]]-unDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Dims")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ElementValueArrayInitializer-unElementValueArrayInitializer :: Typed.TypedTerm Syntax.ElementValueArrayInitializer -> Typed.TypedTerm [Syntax.ElementValue]-unElementValueArrayInitializer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ElementValueArrayInitializer")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.EnumBody-unEnumBody :: Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm [Syntax.EnumBody_Element]-unEnumBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.EnumBody")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.EnumConstantModifier-unEnumConstantModifier :: Typed.TypedTerm Syntax.EnumConstantModifier -> Typed.TypedTerm Syntax.Annotation-unEnumConstantModifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.EnumConstantModifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ExclusiveOrExpression-unExclusiveOrExpression :: Typed.TypedTerm Syntax.ExclusiveOrExpression -> Typed.TypedTerm [Syntax.AndExpression]-unExclusiveOrExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ExclusiveOrExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ExpressionStatement-unExpressionStatement :: Typed.TypedTerm Syntax.ExpressionStatement -> Typed.TypedTerm Syntax.StatementExpression-unExpressionStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ExpressionStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Finally-unFinally :: Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.Block-unFinally x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Finally")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.FloatingPointLiteral-unFloatingPointLiteral :: Typed.TypedTerm Syntax.FloatingPointLiteral -> Typed.TypedTerm Double-unFloatingPointLiteral x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.FloatingPointLiteral")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ForUpdate-unForUpdate :: Typed.TypedTerm Syntax.ForUpdate -> Typed.TypedTerm [Syntax.StatementExpression]-unForUpdate x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ForUpdate")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Guard-unGuard :: Typed.TypedTerm Syntax.Guard -> Typed.TypedTerm Syntax.Expression-unGuard x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Guard")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.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.java.syntax.Identifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.InclusiveOrExpression-unInclusiveOrExpression :: Typed.TypedTerm Syntax.InclusiveOrExpression -> Typed.TypedTerm [Syntax.ExclusiveOrExpression]-unInclusiveOrExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.InclusiveOrExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.InstanceInitializer-unInstanceInitializer :: Typed.TypedTerm Syntax.InstanceInitializer -> Typed.TypedTerm Syntax.Block-unInstanceInitializer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.InstanceInitializer")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.IntegerLiteral-unIntegerLiteral :: Typed.TypedTerm Syntax.IntegerLiteral -> Typed.TypedTerm Integer-unIntegerLiteral x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.IntegerLiteral")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.InterfaceBody-unInterfaceBody :: Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm [Syntax.InterfaceMemberDeclarationWithComments]-unInterfaceBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.InterfaceBody")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.InterfaceType-unInterfaceType :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.ClassType-unInterfaceType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.InterfaceType")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.LocalVariableDeclarationStatement-unLocalVariableDeclarationStatement :: Typed.TypedTerm Syntax.LocalVariableDeclarationStatement -> Typed.TypedTerm Syntax.LocalVariableDeclaration-unLocalVariableDeclarationStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.LocalVariableDeclarationStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.MarkerAnnotation-unMarkerAnnotation :: Typed.TypedTerm Syntax.MarkerAnnotation -> Typed.TypedTerm Syntax.TypeName-unMarkerAnnotation x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.MarkerAnnotation")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.MethodName-unMethodName :: Typed.TypedTerm Syntax.MethodName -> Typed.TypedTerm Syntax.Identifier-unMethodName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.MethodName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.MethodReference_Array-unMethodReference_Array :: Typed.TypedTerm Syntax.MethodReference_Array -> Typed.TypedTerm Syntax.ArrayType-unMethodReference_Array x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.MethodReference_Array")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PackageModifier-unPackageModifier :: Typed.TypedTerm Syntax.PackageModifier -> Typed.TypedTerm Syntax.Annotation-unPackageModifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PackageModifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PackageName-unPackageName :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm [Syntax.Identifier]-unPackageName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PackageName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PackageOrTypeName-unPackageOrTypeName :: Typed.TypedTerm Syntax.PackageOrTypeName -> Typed.TypedTerm [Syntax.Identifier]-unPackageOrTypeName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PackageOrTypeName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PostDecrementExpression-unPostDecrementExpression :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.PostfixExpression-unPostDecrementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PostDecrementExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PostIncrementExpression-unPostIncrementExpression :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.PostfixExpression-unPostIncrementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PostIncrementExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PreDecrementExpression-unPreDecrementExpression :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.UnaryExpression-unPreDecrementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PreDecrementExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.PreIncrementExpression-unPreIncrementExpression :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.UnaryExpression-unPreIncrementExpression x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.PreIncrementExpression")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.RecordBody-unRecordBody :: Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm [Syntax.RecordBodyDeclaration]-unRecordBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.RecordBody")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.RecordComponentModifier-unRecordComponentModifier :: Typed.TypedTerm Syntax.RecordComponentModifier -> Typed.TypedTerm Syntax.Annotation-unRecordComponentModifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.RecordComponentModifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.RecordHeader-unRecordHeader :: Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm [Syntax.RecordComponent]-unRecordHeader x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.RecordHeader")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ResourceSpecification-unResourceSpecification :: Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm [Syntax.Resource]-unResourceSpecification x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ResourceSpecification")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.ReturnStatement-unReturnStatement :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-unReturnStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.ReturnStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.SimpleTypeName-unSimpleTypeName :: Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.TypeIdentifier-unSimpleTypeName x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.SimpleTypeName")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.SingleTypeImportDeclaration-unSingleTypeImportDeclaration :: Typed.TypedTerm Syntax.SingleTypeImportDeclaration -> Typed.TypedTerm Syntax.TypeName-unSingleTypeImportDeclaration x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.SingleTypeImportDeclaration")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.StaticImportOnDemandDeclaration-unStaticImportOnDemandDeclaration :: Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration -> Typed.TypedTerm Syntax.TypeName-unStaticImportOnDemandDeclaration x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.StaticImportOnDemandDeclaration")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.StaticInitializer-unStaticInitializer :: Typed.TypedTerm Syntax.StaticInitializer -> Typed.TypedTerm Syntax.Block-unStaticInitializer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.StaticInitializer")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.StringLiteral-unStringLiteral :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String-unStringLiteral x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.StringLiteral")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.TextBlock-unTextBlock :: Typed.TypedTerm Syntax.TextBlock -> Typed.TypedTerm String-unTextBlock x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.TextBlock")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.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.java.syntax.ThrowStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.Throws-unThrows :: Typed.TypedTerm Syntax.Throws -> Typed.TypedTerm [Syntax.ExceptionType]-unThrows x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.Throws")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.TypeIdentifier-unTypeIdentifier :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.Identifier-unTypeIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.TypeIdentifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.TypeImportOnDemandDeclaration-unTypeImportOnDemandDeclaration :: Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration -> Typed.TypedTerm Syntax.PackageOrTypeName-unTypeImportOnDemandDeclaration x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.TypeImportOnDemandDeclaration")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.TypeParameterModifier-unTypeParameterModifier :: Typed.TypedTerm Syntax.TypeParameterModifier -> Typed.TypedTerm Syntax.Annotation-unTypeParameterModifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.TypeParameterModifier")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.TypePattern-unTypePattern :: Typed.TypedTerm Syntax.TypePattern -> Typed.TypedTerm Syntax.LocalVariableDeclaration-unTypePattern x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.TypePattern")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.UnannClassType-unUnannClassType :: Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm Syntax.ClassType-unUnannClassType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.UnannClassType")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.UnannType-unUnannType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Type-unUnannType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.UnannType")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body of hydra.java.syntax.YieldStatement-unYieldStatement :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.Expression-unYieldStatement x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.java.syntax.YieldStatement")),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for the hydra.java.syntax.UnannClassType wrapper-unannClassType :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.UnannClassType-unannClassType x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.UnannClassType"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.UnannClassType-unannClassTypeUnannClassType :: Typed.TypedName Syntax.UnannClassType-unannClassTypeUnannClassType = Typed.TypedName (Core.Name "hydra.java.syntax.UnannClassType")---- | DSL constructor for the hydra.java.syntax.UnannType wrapper-unannType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.UnannType-unannType x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.UnannType"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.UnannType-unannTypeUnannType :: Typed.TypedName Syntax.UnannType-unannTypeUnannType = Typed.TypedName (Core.Name "hydra.java.syntax.UnannType")---- | DSL injection for the minus variant of hydra.java.syntax.UnaryExpression-unaryExpressionMinus :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionMinus x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "minus"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the cast variant of hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusCast :: Typed.TypedTerm Syntax.CastExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusCast x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "cast"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the not variant of hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusNot :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusNot x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "not"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the postfix variant of hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusPostfix :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusPostfix x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "postfix"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the switchExpression variant of hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusSwitchExpression :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusSwitchExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "switchExpression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the tilde variant of hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusTilde :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusTilde x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "tilde"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus :: Typed.TypedName Syntax.UnaryExpressionNotPlusMinus-unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus =-    Typed.TypedName (Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus")---- | DSL injection for the other variant of hydra.java.syntax.UnaryExpression-unaryExpressionOther :: Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionOther x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "other"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the plus variant of hydra.java.syntax.UnaryExpression-unaryExpressionPlus :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionPlus x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "plus"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the preDecrement variant of hydra.java.syntax.UnaryExpression-unaryExpressionPreDecrement :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionPreDecrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "preDecrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the preIncrement variant of hydra.java.syntax.UnaryExpression-unaryExpressionPreIncrement :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.UnaryExpression-unaryExpressionPreIncrement x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.UnaryExpression"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "preIncrement"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.UnaryExpression-unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression-unaryExpressionUnaryExpression = Typed.TypedName (Core.Name "hydra.java.syntax.UnaryExpression")---- | DSL constructor for hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpression :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpression typeArguments classOrInterface arguments body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm typeArguments)},-        Core.Field {-          Core.fieldName = (Core.Name "classOrInterface"),-          Core.fieldTerm = (Typed.unTypedTerm classOrInterface)},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm arguments)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the arguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.Expression]-unqualifiedClassInstanceCreationExpressionArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "arguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the body field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionBody :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassBody)-unqualifiedClassInstanceCreationExpressionBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the classOrInterface field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionClassOrInterface :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate-unqualifiedClassInstanceCreationExpressionClassOrInterface x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "classOrInterface")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the typeArguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionTypeArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.TypeArgument]-unqualifiedClassInstanceCreationExpressionTypeArguments x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-        Core.projectionFieldName = (Core.Name "typeArguments")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression :: Typed.TypedName Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression =-    Typed.TypedName (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression")---- | DSL updater for the arguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "classOrInterface"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "classOrInterface")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "arguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the body field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithBody :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "classOrInterface"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "classOrInterface")})),-            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.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the classOrInterface field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithClassOrInterface :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithClassOrInterface original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "typeArguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "classOrInterface"),-          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.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the typeArguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithTypeArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression-unqualifiedClassInstanceCreationExpressionWithTypeArguments original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "typeArguments"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "classOrInterface"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "classOrInterface")})),-            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.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "arguments")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL injection for the expressionName variant of hydra.java.syntax.VariableAccess-variableAccessExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.VariableAccess-variableAccessExpressionName x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableAccess"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expressionName"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the fieldAccess variant of hydra.java.syntax.VariableAccess-variableAccessFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.VariableAccess-variableAccessFieldAccess x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableAccess"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "fieldAccess"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.VariableAccess-variableAccessVariableAccess :: Typed.TypedName Syntax.VariableAccess-variableAccessVariableAccess = Typed.TypedName (Core.Name "hydra.java.syntax.VariableAccess")---- | DSL constructor for hydra.java.syntax.VariableArityParameter-variableArityParameter :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityParameter-variableArityParameter modifiers type_ annotations identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.VariableArityParameter-variableArityParameterAnnotations :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.Annotation]-variableArityParameterAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.VariableArityParameter-variableArityParameterIdentifier :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.Identifier-variableArityParameterIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.VariableArityParameter-variableArityParameterModifiers :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.VariableModifier]-variableArityParameterModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.VariableArityParameter-variableArityParameterType :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.UnannType-variableArityParameterType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.VariableArityParameter-variableArityParameterVariableArityParameter :: Typed.TypedName Syntax.VariableArityParameter-variableArityParameterVariableArityParameter = Typed.TypedName (Core.Name "hydra.java.syntax.VariableArityParameter")---- | DSL updater for the annotations field of hydra.java.syntax.VariableArityParameter-variableArityParameterWithAnnotations :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.VariableArityParameter-variableArityParameterWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.VariableArityParameter-variableArityParameterWithIdentifier :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityParameter-variableArityParameterWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.VariableArityParameter-variableArityParameterWithModifiers :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.VariableArityParameter-variableArityParameterWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.VariableArityParameter-variableArityParameterWithType :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableArityParameter-variableArityParameterWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityParameter"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponent :: Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityRecordComponent-variableArityRecordComponent modifiers type_ annotations identifier =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Typed.unTypedTerm modifiers)},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm type_)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentAnnotations :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.Annotation]-variableArityRecordComponentAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentIdentifier :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.Identifier-variableArityRecordComponentIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the modifiers field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentModifiers :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.RecordComponentModifier]-variableArityRecordComponentModifiers x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-        Core.projectionFieldName = (Core.Name "modifiers")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the type field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentType :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.UnannType-variableArityRecordComponentType x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-        Core.projectionFieldName = (Core.Name "type")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentVariableArityRecordComponent :: Typed.TypedName Syntax.VariableArityRecordComponent-variableArityRecordComponentVariableArityRecordComponent =-    Typed.TypedName (Core.Name "hydra.java.syntax.VariableArityRecordComponent")---- | DSL updater for the annotations field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentWithAnnotations :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.VariableArityRecordComponent-variableArityRecordComponentWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the identifier field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentWithIdentifier :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityRecordComponent-variableArityRecordComponentWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            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.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the modifiers field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentWithModifiers :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.VariableArityRecordComponent-variableArityRecordComponentWithModifiers original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          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.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "type")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the type field of hydra.java.syntax.VariableArityRecordComponent-variableArityRecordComponentWithType :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableArityRecordComponent-variableArityRecordComponentWithType original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "modifiers"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "modifiers")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "type"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableArityRecordComponent"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.VariableDeclarator-variableDeclarator :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.VariableInitializer) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclarator id initializer =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm id)},-        Core.Field {-          Core.fieldName = (Core.Name "initializer"),-          Core.fieldTerm = (Typed.unTypedTerm initializer)}]}))---- | DSL accessor for the id field of hydra.java.syntax.VariableDeclarator-variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.VariableDeclaratorId-variableDeclaratorId x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclarator"),-        Core.projectionFieldName = (Core.Name "id")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.java.syntax.VariableDeclaratorId-variableDeclaratorId2 :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.VariableDeclaratorId-variableDeclaratorId2 identifier dims =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm identifier)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm dims)}]}))---- | DSL accessor for the dims field of hydra.java.syntax.VariableDeclaratorId-variableDeclaratorIdDims :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.Dims)-variableDeclaratorIdDims x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-        Core.projectionFieldName = (Core.Name "dims")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the identifier field of hydra.java.syntax.VariableDeclaratorId-variableDeclaratorIdIdentifier :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.Identifier-variableDeclaratorIdIdentifier x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-        Core.projectionFieldName = (Core.Name "identifier")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.VariableDeclaratorId-variableDeclaratorIdVariableDeclaratorId :: Typed.TypedName Syntax.VariableDeclaratorId-variableDeclaratorIdVariableDeclaratorId = Typed.TypedName (Core.Name "hydra.java.syntax.VariableDeclaratorId")---- | DSL updater for the dims field of hydra.java.syntax.VariableDeclaratorId-variableDeclaratorIdWithDims :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.VariableDeclaratorId-variableDeclaratorIdWithDims original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-              Core.projectionFieldName = (Core.Name "identifier")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the identifier field of hydra.java.syntax.VariableDeclaratorId-variableDeclaratorIdWithIdentifier :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableDeclaratorId-variableDeclaratorIdWithIdentifier original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "identifier"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "dims"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclaratorId"),-              Core.projectionFieldName = (Core.Name "dims")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL accessor for the initializer field of hydra.java.syntax.VariableDeclarator-variableDeclaratorInitializer :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.VariableInitializer)-variableDeclaratorInitializer x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclarator"),-        Core.projectionFieldName = (Core.Name "initializer")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.VariableDeclarator-variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator-variableDeclaratorVariableDeclarator = Typed.TypedName (Core.Name "hydra.java.syntax.VariableDeclarator")---- | DSL updater for the id field of hydra.java.syntax.VariableDeclarator-variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithId original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.VariableDeclarator"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "id"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "initializer"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.VariableDeclarator"),-              Core.projectionFieldName = (Core.Name "initializer")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the initializer field of hydra.java.syntax.VariableDeclarator-variableDeclaratorWithInitializer :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.VariableInitializer) -> Typed.TypedTerm Syntax.VariableDeclarator-variableDeclaratorWithInitializer original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.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.java.syntax.VariableDeclarator"),-              Core.projectionFieldName = (Core.Name "id")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "initializer"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL injection for the arrayInitializer variant of hydra.java.syntax.VariableInitializer-variableInitializerArrayInitializer :: Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.VariableInitializer-variableInitializerArrayInitializer x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "arrayInitializer"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the expression variant of hydra.java.syntax.VariableInitializer-variableInitializerExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.VariableInitializer-variableInitializerExpression x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableInitializer"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "expression"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.VariableInitializer-variableInitializerVariableInitializer :: Typed.TypedName Syntax.VariableInitializer-variableInitializerVariableInitializer = Typed.TypedName (Core.Name "hydra.java.syntax.VariableInitializer")---- | DSL injection for the annotation variant of hydra.java.syntax.VariableModifier-variableModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.VariableModifier-variableModifierAnnotation x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "annotation"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the final variant of hydra.java.syntax.VariableModifier-variableModifierFinal :: Typed.TypedTerm Syntax.VariableModifier-variableModifierFinal =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.VariableModifier"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "final"),-        Core.fieldTerm = Core.TermUnit}}))---- | DSL name token for hydra.java.syntax.VariableModifier-variableModifierVariableModifier :: Typed.TypedName Syntax.VariableModifier-variableModifierVariableModifier = Typed.TypedName (Core.Name "hydra.java.syntax.VariableModifier")---- | DSL constructor for hydra.java.syntax.WhileStatement-whileStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement-whileStatement cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.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.java.syntax.WhileStatement"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.WhileStatement-whileStatementCond :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Expression)-whileStatementCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatement"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL constructor for hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIf :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.WhileStatementNoShortIf-whileStatementNoShortIf cond body =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm cond)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm body)}]}))---- | DSL accessor for the body field of hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIfBody :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf-whileStatementNoShortIfBody x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "body")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL accessor for the cond field of hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIfCond :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression)-whileStatementNoShortIfCond x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-        Core.projectionFieldName = (Core.Name "cond")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIfWhileStatementNoShortIf :: Typed.TypedName Syntax.WhileStatementNoShortIf-whileStatementNoShortIfWhileStatementNoShortIf = Typed.TypedName (Core.Name "hydra.java.syntax.WhileStatementNoShortIf")---- | DSL updater for the body field of hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.WhileStatementNoShortIf-whileStatementNoShortIfWithBody original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.WhileStatementNoShortIf-whileStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.WhileStatementNoShortIf-whileStatementNoShortIfWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatementNoShortIf"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL name token for hydra.java.syntax.WhileStatement-whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement-whileStatementWhileStatement = Typed.TypedName (Core.Name "hydra.java.syntax.WhileStatement")---- | DSL updater for the body field of hydra.java.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.java.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatement"),-              Core.projectionFieldName = (Core.Name "cond")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL updater for the cond field of hydra.java.syntax.WhileStatement-whileStatementWithCond :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.WhileStatement-whileStatementWithCond original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.WhileStatement"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "cond"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "body"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.WhileStatement"),-              Core.projectionFieldName = (Core.Name "body")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL constructor for hydra.java.syntax.Wildcard-wildcard :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm (Maybe Syntax.WildcardBounds) -> Typed.TypedTerm Syntax.Wildcard-wildcard annotations wildcard =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm annotations)},-        Core.Field {-          Core.fieldName = (Core.Name "wildcard"),-          Core.fieldTerm = (Typed.unTypedTerm wildcard)}]}))---- | DSL accessor for the annotations field of hydra.java.syntax.Wildcard-wildcardAnnotations :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm [Syntax.Annotation]-wildcardAnnotations x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-        Core.projectionFieldName = (Core.Name "annotations")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL injection for the extends variant of hydra.java.syntax.WildcardBounds-wildcardBoundsExtends :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.WildcardBounds-wildcardBoundsExtends x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.WildcardBounds"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "extends"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL injection for the super variant of hydra.java.syntax.WildcardBounds-wildcardBoundsSuper :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.WildcardBounds-wildcardBoundsSuper x =-    Typed.TypedTerm (Core.TermInject (Core.Injection {-      Core.injectionTypeName = (Core.Name "hydra.java.syntax.WildcardBounds"),-      Core.injectionField = Core.Field {-        Core.fieldName = (Core.Name "super"),-        Core.fieldTerm = (Typed.unTypedTerm x)}}))---- | DSL name token for hydra.java.syntax.WildcardBounds-wildcardBoundsWildcardBounds :: Typed.TypedName Syntax.WildcardBounds-wildcardBoundsWildcardBounds = Typed.TypedName (Core.Name "hydra.java.syntax.WildcardBounds")---- | DSL name token for hydra.java.syntax.Wildcard-wildcardWildcard :: Typed.TypedName Syntax.Wildcard-wildcardWildcard = Typed.TypedName (Core.Name "hydra.java.syntax.Wildcard")---- | DSL accessor for the wildcard field of hydra.java.syntax.Wildcard-wildcardWildcard2 :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm (Maybe Syntax.WildcardBounds)-wildcardWildcard2 x =-    Typed.TypedTerm (Core.TermApplication (Core.Application {-      Core.applicationFunction = (Core.TermProject (Core.Projection {-        Core.projectionTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-        Core.projectionFieldName = (Core.Name "wildcard")})),-      Core.applicationArgument = (Typed.unTypedTerm x)}))---- | DSL updater for the annotations field of hydra.java.syntax.Wildcard-wildcardWithAnnotations :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Wildcard-wildcardWithAnnotations original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)},-        Core.Field {-          Core.fieldName = (Core.Name "wildcard"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-              Core.projectionFieldName = (Core.Name "wildcard")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))---- | DSL updater for the wildcard field of hydra.java.syntax.Wildcard-wildcardWithWildcard :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm (Maybe Syntax.WildcardBounds) -> Typed.TypedTerm Syntax.Wildcard-wildcardWithWildcard original newVal =-    Typed.TypedTerm (Core.TermRecord (Core.Record {-      Core.recordTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-      Core.recordFields = [-        Core.Field {-          Core.fieldName = (Core.Name "annotations"),-          Core.fieldTerm = (Core.TermApplication (Core.Application {-            Core.applicationFunction = (Core.TermProject (Core.Projection {-              Core.projectionTypeName = (Core.Name "hydra.java.syntax.Wildcard"),-              Core.projectionFieldName = (Core.Name "annotations")})),-            Core.applicationArgument = (Typed.unTypedTerm original)}))},-        Core.Field {-          Core.fieldName = (Core.Name "wildcard"),-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))---- | DSL constructor for the hydra.java.syntax.YieldStatement wrapper-yieldStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.YieldStatement-yieldStatement x =-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {-      Core.wrappedTermTypeName = (Core.Name "hydra.java.syntax.YieldStatement"),-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))---- | DSL name token for hydra.java.syntax.YieldStatement-yieldStatementYieldStatement :: Typed.TypedName Syntax.YieldStatement-yieldStatementYieldStatement = Typed.TypedName (Core.Name "hydra.java.syntax.YieldStatement")
− src/main/haskell/Hydra/Gradle.hs
@@ -1,54 +0,0 @@--- Note: this is an automatically generated file. Do not edit.---- | Build configuration for Gradle-built distribution packages.--module Hydra.Gradle where--import qualified Hydra.Core as Core-import qualified Hydra.File as File-import qualified Hydra.Packaging as Packaging-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void---- | Configuration for the Gradle antlr plugin's grammar generation (generateGrammarSource).-data AntlrConfig =-  AntlrConfig {-    -- | Arguments passed to the ANTLR tool, e.g. ["-visitor"] or ["-visitor", "-listener"]. Faithful to ANTLR's command-line interface; covers all ANTLR flags without enumerating them.-    antlrConfigArguments :: [String],-    -- | Directory into which ANTLR emits generated lexer/parser sources, relative to the package root (e.g. "build/generated-src/antlr/main"). The host also folds this into the main source set.-    antlrConfigOutputDirectory :: File.FilePath}-  deriving (Eq, Ord, Read, Show)--_AntlrConfig = Core.Name "hydra.gradle.AntlrConfig"--_AntlrConfig_arguments = Core.Name "arguments"--_AntlrConfig_outputDirectory = Core.Name "outputDirectory"---- | The build configuration for a single Gradle-built distribution package, beyond its generated sources.-data GradleBuildConfiguration =-  GradleBuildConfiguration {-    -- | Third-party (non-project) dependencies required by the package. Inter-package dependencies within the project are derived separately and are not listed here. Each dependency's scope (api/runtime/test/tool) is significant; its name carries the Maven group and artifact separated by a colon.-    gradleBuildConfigurationDependencies :: [Packaging.PackageDependency],-    -- | Source paths or patterns to exclude from compilation, relative to the package root.-    gradleBuildConfigurationExcludes :: [String],-    -- | Additional source directories to fold into the package's main source set, beyond the generated and overlaid sources (e.g. a directory of build-tool-generated sources).-    gradleBuildConfigurationExtraSourceDirs :: [File.FilePath],-    -- | Gradle plugin identifiers to apply to the build, e.g. "antlr". Applied in the given order.-    gradleBuildConfigurationPlugins :: [String],-    -- | ANTLR grammar-generation configuration, present when the package uses the antlr plugin. When given, the host emits the generateGrammarSource configuration and the compileJava-depends-on-generateGrammarSource ordering. Modeled as structured vocabulary rather than a raw Groovy fragment.-    gradleBuildConfigurationAntlr :: (Maybe AntlrConfig)}-  deriving (Eq, Ord, Read, Show)--_GradleBuildConfiguration = Core.Name "hydra.gradle.GradleBuildConfiguration"--_GradleBuildConfiguration_dependencies = Core.Name "dependencies"--_GradleBuildConfiguration_excludes = Core.Name "excludes"--_GradleBuildConfiguration_extraSourceDirs = Core.Name "extraSourceDirs"--_GradleBuildConfiguration_plugins = Core.Name "plugins"--_GradleBuildConfiguration_antlr = Core.Name "antlr"
src/main/haskell/Hydra/Java/Coder.hs view
@@ -4,3246 +4,3249 @@  module Hydra.Java.Coder where -import qualified Hydra.Analysis as Analysis-import qualified Hydra.Annotations as Annotations-import qualified Hydra.Arity as Arity-import qualified Hydra.Ast as Ast-import qualified Hydra.Checking as Checking-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Decode.Core as DecodeCore-import qualified Hydra.Dependencies as Dependencies-import qualified Hydra.Encode.Core as EncodeCore-import qualified Hydra.Environment as Environment-import qualified Hydra.Error.Checking as ErrorChecking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph-import qualified Hydra.Inference as Inference-import qualified Hydra.Java.Environment as JavaEnvironment-import qualified Hydra.Java.Language as Language-import qualified Hydra.Java.Names as JavaNames-import qualified Hydra.Java.Serde as Serde-import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Java.Utils as Utils-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Predicates as Predicates-import qualified Hydra.Print.Core as PrintCore-import qualified Hydra.Query as Query-import qualified Hydra.Refs as Refs-import qualified Hydra.Relational as Relational-import qualified Hydra.Resolution as Resolution-import qualified Hydra.Rewriting as Rewriting-import qualified Hydra.Scoping as Scoping-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Sorting as Sorting-import qualified Hydra.Strip as Strip-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variables as Variables-import qualified Hydra.Variants as Variants-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)-import qualified Data.Scientific as Sci-import Data.Void-import qualified Data.Map as M-import qualified Data.Set as S---- | Attach comments derived from a field's annotations to a class body declaration-addComment :: Syntax.ClassBodyDeclaration -> Core.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-addComment decl field cx g =-    Eithers.map (\c -> Syntax.ClassBodyDeclarationWithComments {-      Syntax.classBodyDeclarationWithCommentsValue = decl,-      Syntax.classBodyDeclarationWithCommentsComments = c}) (Annotations.commentsFromFieldType cx g field)--analyzeJavaFunction :: JavaEnvironment.JavaEnvironment -> Core.Term -> Typing.InferenceContext -> t0 -> Either t1 (Typing.FunctionStructure JavaEnvironment.JavaEnvironment)-analyzeJavaFunction env term cx g = Analysis.analyzeFunctionTerm cx javaEnvGetGraph javaEnvSetGraph env term--annotateBodyWithCod :: Core.Type -> Core.Term -> Core.Term-annotateBodyWithCod typ term =--      let setAnn = \t -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ typ)) t-      in case (Strip.deannotateTerm term) of-        Core.TermTypeApplication _ -> setAnn term-        Core.TermApplication v0 ->-          let lhs = Core.applicationFunction v0-              rhs = Core.applicationArgument v0-              annotatedRhs =-                      case (Strip.deannotateTerm rhs) of-                        Core.TermTypeApplication _ -> annotateBodyWithCod (extractArgType lhs typ) rhs-                        _ -> rhs-          in (setAnn (Core.TermApplication (Core.Application {-            Core.applicationFunction = lhs,-            Core.applicationArgument = annotatedRhs})))-        _ -> setAnn term--annotateLambdaArgs :: Core.Name -> [Core.Type] -> [Core.Term] -> t0 -> Graph.Graph -> Either t1 [Core.Term]-annotateLambdaArgs cname tApps argTerms cx g =-    Logic.ifElse (Lists.isEmpty tApps) (Right argTerms) (Eithers.bind (Eithers.bind (Right (Lexical.lookupBinding g cname)) (\mel -> Optionals.match mel (Right (Optionals.map (\prim -> Scoping.termSignatureToTypeScheme (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))) (Maps.lookup cname (Graph.graphPrimitives g)))) (\el -> Right (Core.bindingTypeScheme el)))) (\mts -> Optionals.match mts (Right argTerms) (\ts ->-      let schemeType = Core.typeSchemeBody ts-          schemeTypeVars = collectTypeVars schemeType-          schemeVars = Lists.filter (\v -> Sets.member v schemeTypeVars) (Core.typeSchemeVariables ts)-      in (Logic.ifElse (Logic.or (Lists.isEmpty schemeVars) (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length tApps)))) (Right argTerms) (-        let subst = Maps.fromList (Lists.zip schemeVars tApps)-            expectedTypes = peelExpectedTypes subst (Lists.length argTerms) schemeType-        in (Right (Lists.zipWith (\arg -> \mExpected -> propagateType mExpected arg) argTerms (Lists.concat2 expectedTypes (Lists.replicate (Lists.length argTerms) (Core.TypeVariable (Core.Name "unused")))))))))))--applyCastIfSafe :: JavaEnvironment.Aliases -> Core.Type -> Syntax.Expression -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression-applyCastIfSafe aliases castType expr cx g =--      let trusted = JavaEnvironment.aliasesTrustedTypeVars aliases-          inScope = JavaEnvironment.aliasesInScopeTypeParams aliases-          castVars = collectTypeVars castType-          javaTypeVars =-                  Sets.fromList (Lists.filter (\v -> Logic.or (Sets.member v inScope) (isLambdaBoundVariable v)) (Sets.toList castVars))-          isSafe =-                  Logic.or (Sets.isEmpty trusted) (Logic.or (Sets.isEmpty javaTypeVars) (Sets.isEmpty (Sets.difference javaTypeVars trusted)))-      in (Logic.ifElse isSafe (Eithers.bind (encodeType aliases Sets.empty castType cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression expr)))))) (Right expr))--applyJavaArg :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression-applyJavaArg expr jarg =-    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right (Utils.javaExpressionToJavaPrimary expr))) (Syntax.Identifier JavaNames.applyMethodName) [-      jarg])--applyOvergenSubstToTermAnnotations :: M.Map Core.Name Core.Type -> Core.Term -> t0 -> Graph.Graph -> Either t1 Core.Term-applyOvergenSubstToTermAnnotations subst term0 cx g = Right (applyOvergenSubstToTermAnnotationsGo subst g term0)--applyOvergenSubstToTermAnnotationsGo :: M.Map Core.Name Core.Type -> Graph.Graph -> Core.Term -> Core.Term-applyOvergenSubstToTermAnnotationsGo subst cx term =-    case term of-      Core.TermAnnotated v0 ->-        let inner = Core.annotatedTermBody v0-            ann = Annotations.getAnnotationMap (Core.annotatedTermAnnotation v0)-            ann_ =-                    Optionals.match (Maps.lookup Constants.keyType ann) ann (\typeTerm -> Eithers.either (\_ -> ann) (\t ->-                      let t_ = substituteTypeVarsWithTypes subst t-                      in (Maps.insert Constants.keyType (EncodeCore.type_ t_) ann)) (DecodeCore.type_ cx typeTerm))-        in (Core.TermAnnotated (Core.AnnotatedTerm {-          Core.annotatedTermBody = (applyOvergenSubstToTermAnnotationsGo subst cx inner),-          Core.annotatedTermAnnotation = (Annotations.wrapAnnotationMap ann_)}))-      Core.TermApplication v0 -> Core.TermApplication (Core.Application {-        Core.applicationFunction = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.applicationFunction v0)),-        Core.applicationArgument = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.applicationArgument v0))})-      Core.TermLambda v0 -> Core.TermLambda (Core.Lambda {-        Core.lambdaParameter = (Core.lambdaParameter v0),-        Core.lambdaDomain = (Optionals.map (\d -> substituteTypeVarsWithTypes subst d) (Core.lambdaDomain v0)),-        Core.lambdaBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.lambdaBody v0))})-      Core.TermCases v0 -> Core.TermCases (Core.CaseStatement {-        Core.caseStatementTypeName = (Core.caseStatementTypeName v0),-        Core.caseStatementDefault = (Optionals.map (\d -> applyOvergenSubstToTermAnnotationsGo subst cx d) (Core.caseStatementDefault v0)),-        Core.caseStatementCases = (Lists.map (\fld -> Core.CaseAlternative {-          Core.caseAlternativeName = (Core.caseAlternativeName fld),-          Core.caseAlternativeHandler = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.caseAlternativeHandler fld))}) (Core.caseStatementCases v0))})-      Core.TermLet v0 -> Core.TermLet (Core.Let {-        Core.letBindings = (Lists.map (\b -> Core.Binding {-          Core.bindingName = (Core.bindingName b),-          Core.bindingTerm = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.bindingTerm b)),-          Core.bindingTypeScheme = (Core.bindingTypeScheme b)}) (Core.letBindings v0)),-        Core.letBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.letBody v0))})-      Core.TermTypeApplication v0 -> Core.TermTypeApplication (Core.TypeApplicationTerm {-        Core.typeApplicationTermBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.typeApplicationTermBody v0)),-        Core.typeApplicationTermType = (substituteTypeVarsWithTypes subst (Core.typeApplicationTermType v0))})-      Core.TermTypeLambda v0 -> Core.TermTypeLambda (Core.TypeLambda {-        Core.typeLambdaParameter = (Core.typeLambdaParameter v0),-        Core.typeLambdaBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Core.typeLambdaBody v0))})-      _ -> term--applySubstFull :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type-applySubstFull s t =-    case (Strip.deannotateType t) of-      Core.TypeVariable v0 -> Maps.findWithDefault t v0 s-      Core.TypeFunction v0 -> Core.TypeFunction (Core.FunctionType {-        Core.functionTypeDomain = (applySubstFull s (Core.functionTypeDomain v0)),-        Core.functionTypeCodomain = (applySubstFull s (Core.functionTypeCodomain v0))})-      Core.TypeApplication v0 -> Core.TypeApplication (Core.ApplicationType {-        Core.applicationTypeFunction = (applySubstFull s (Core.applicationTypeFunction v0)),-        Core.applicationTypeArgument = (applySubstFull s (Core.applicationTypeArgument v0))})-      Core.TypeList v0 -> Core.TypeList (applySubstFull s v0)-      Core.TypeSet v0 -> Core.TypeSet (applySubstFull s v0)-      Core.TypeOptional v0 -> Core.TypeOptional (applySubstFull s v0)-      Core.TypeEffect v0 -> Core.TypeEffect (applySubstFull s v0)-      Core.TypeMap v0 -> Core.TypeMap (Core.MapType {-        Core.mapTypeKeys = (applySubstFull s (Core.mapTypeKeys v0)),-        Core.mapTypeValues = (applySubstFull s (Core.mapTypeValues v0))})-      Core.TypePair v0 -> Core.TypePair (Core.PairType {-        Core.pairTypeFirst = (applySubstFull s (Core.pairTypeFirst v0)),-        Core.pairTypeSecond = (applySubstFull s (Core.pairTypeSecond v0))})-      Core.TypeEither v0 -> Core.TypeEither (Core.EitherType {-        Core.eitherTypeLeft = (applySubstFull s (Core.eitherTypeLeft v0)),-        Core.eitherTypeRight = (applySubstFull s (Core.eitherTypeRight v0))})-      Core.TypeForall v0 -> Core.TypeForall (Core.ForallType {-        Core.forallTypeParameter = (Core.forallTypeParameter v0),-        Core.forallTypeBody = (applySubstFull (Maps.delete (Core.forallTypeParameter v0) s) (Core.forallTypeBody v0))})-      _ -> t--applySubstSimple :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type-applySubstSimple subst t =-    case (Strip.deannotateType t) of-      Core.TypeVariable v0 -> Maps.findWithDefault t v0 subst-      _ -> t--arraysCompareExpr :: String -> String -> Syntax.Expression-arraysCompareExpr otherVar fname =--      let header =-              Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Arrays"))),-                Syntax.methodInvocation_ComplexTypeArguments = [],-                Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})-          arg1 =-                  Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {-                    Syntax.expressionNameQualifier = Nothing,-                    Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fname))})-          arg2 =-                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))-      in (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-        Syntax.methodInvocationHeader = header,-        Syntax.methodInvocationArguments = [-          arg1,-          arg2]}))--arraysEqualsClause :: String -> String -> Syntax.InclusiveOrExpression-arraysEqualsClause tmpName fname =--      let thisArg =-              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))-          otherArg =-                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))-          header =-                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                    Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Arrays"))),-                    Syntax.methodInvocation_ComplexTypeArguments = [],-                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.equalsMethodName)})-      in (Utils.javaPostfixExpressionToJavaInclusiveOrExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {-        Syntax.methodInvocationHeader = header,-        Syntax.methodInvocationArguments = [-          thisArg,-          otherArg]})))--augmentVariantClass :: JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> Syntax.ClassDeclaration -> Syntax.ClassDeclaration-augmentVariantClass aliases tparams elName cd =-    case cd of-      Syntax.ClassDeclarationNormal v0 ->-        let args = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams-            extendsPart = Utils.nameToJavaClassType aliases True args elName Nothing-            newMods =-                    [-                      Syntax.ClassModifierPublic,-                      Syntax.ClassModifierStatic,-                      Syntax.ClassModifierFinal]-            oldBody = Syntax.normalClassDeclarationBody v0-            oldDecls = Syntax.unClassBody oldBody-            acceptDecl = withCommentString "Dispatch to {@code visitor}." (Utils.toAcceptMethod False tparams)-            newBody = Syntax.ClassBody (Lists.concat2 oldDecls [-                  acceptDecl])-        in (Syntax.ClassDeclarationNormal (Syntax.NormalClassDeclaration {-          Syntax.normalClassDeclarationModifiers = newMods,-          Syntax.normalClassDeclarationIdentifier = (Syntax.normalClassDeclarationIdentifier v0),-          Syntax.normalClassDeclarationParameters = tparams,-          Syntax.normalClassDeclarationExtends = (Just extendsPart),-          Syntax.normalClassDeclarationImplements = (Syntax.normalClassDeclarationImplements v0),-          Syntax.normalClassDeclarationPermits = (Syntax.normalClassDeclarationPermits v0),-          Syntax.normalClassDeclarationBody = newBody}))-      _ -> cd--bindingIsFunctionType :: Core.Binding -> Bool-bindingIsFunctionType b =-    Optionals.match (Core.bindingTypeScheme b) (case (Strip.deannotateTerm (Core.bindingTerm b)) of-      Core.TermLambda _ -> True-      Core.TermProject _ -> True-      Core.TermCases _ -> True-      Core.TermUnwrap _ -> True-      _ -> False) (\ts -> case (Strip.deannotateType (Core.typeSchemeBody ts)) of-      Core.TypeFunction _ -> True-      Core.TypeForall v0 -> case (Strip.deannotateType (Core.forallTypeBody v0)) of-        Core.TypeFunction _ -> True-        _ -> False-      _ -> False)--bindingNameToFilePath :: Core.Name -> String-bindingNameToFilePath name =--      let qn = Names.qualifyName name-          ns_ = Util.qualifiedNameModuleName qn-          local = Util.qualifiedNameLocal qn-          sanitized = Formatting.sanitizeWithUnderscores Language.reservedWords local-          unq =-                  Names.unqualifyName (Util.QualifiedName {-                    Util.qualifiedNameModuleName = ns_,-                    Util.qualifiedNameLocal = sanitized})-      in (Names.nameToFilePath Util.CaseConventionCamel Util.CaseConventionPascal (File.FileExtension "java") unq)--bindingsToStatements :: JavaEnvironment.JavaEnvironment -> [Core.Binding] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error ([Syntax.BlockStatement], JavaEnvironment.JavaEnvironment)-bindingsToStatements env bindings cx g0 =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          g = JavaEnvironment.javaEnvironmentGraph env-          flatBindings = dedupBindings (JavaEnvironment.aliasesInScopeJavaVars aliases) (flattenBindings bindings)-          gExtended =-                  Scoping.extendGraphForLet (\g1 -> \b -> Logic.ifElse (Predicates.isComplexBinding g1 b) (Just (Core.TermLiteral (Core.LiteralBoolean True))) Nothing) g (Core.Let {-                    Core.letBindings = flatBindings,-                    Core.letBody = (Core.TermVariable (Core.Name "dummy"))})-          bindingVars = Sets.fromList (Lists.map (\b -> Core.bindingName b) flatBindings)-          allDeps =-                  Maps.fromList (Lists.map (\b ->-                    let key = Core.bindingName b-                        deps = Sets.intersection bindingVars (Variables.freeVariablesInTerm (Core.bindingTerm b))-                    in (key, deps)) flatBindings)-          sorted =-                  Sorting.topologicalSortComponents (Lists.map (\entry ->-                    let key = Pairs.first entry-                        deps = Pairs.second entry-                    in (key, (Sets.toList deps))) (Maps.toList allDeps))-          recursiveVars =-                  Sets.fromList (Lists.concat (Lists.map (\names -> Logic.ifElse (Equality.equal (Lists.length names) 1) (Optionals.match (Lists.head names) [] (\singleName -> Optionals.match (Maps.lookup singleName allDeps) [] (\deps -> Logic.ifElse (Sets.member singleName deps) [-                    singleName] []))) names) sorted))-          thunkedVars =-                  Sets.fromList (Lists.concat (Lists.map (\b ->-                    let bname = Core.bindingName b-                    in (Logic.ifElse (Logic.and (Logic.not (Sets.member bname recursiveVars)) (Logic.and (Logic.and (Predicates.isComplexBinding g b) (Logic.not (Predicates.isTrivialTerm (Core.bindingTerm b)))) (Logic.not (bindingIsFunctionType b)))) [-                      bname] [])) flatBindings))-          aliasesExtended =-                  JavaEnvironment.Aliases {-                    JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),-                    JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),-                    JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases),-                    JavaEnvironment.aliasesRecursiveVars = (Sets.union (JavaEnvironment.aliasesRecursiveVars aliases) recursiveVars),-                    JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),-                    JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),-                    JavaEnvironment.aliasesInScopeJavaVars = (Sets.union (JavaEnvironment.aliasesInScopeJavaVars aliases) bindingVars),-                    JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),-                    JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases),-                    JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),-                    JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),-                    JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases),-                    JavaEnvironment.aliasesThunkedVars = (Sets.union (JavaEnvironment.aliasesThunkedVars aliases) thunkedVars)}-          envExtended =-                  JavaEnvironment.JavaEnvironment {-                    JavaEnvironment.javaEnvironmentAliases = aliasesExtended,-                    JavaEnvironment.javaEnvironmentGraph = gExtended}-      in (Logic.ifElse (Lists.isEmpty bindings) (Right ([], envExtended)) (Eithers.bind (Eithers.mapList (\names -> Eithers.bind (Eithers.mapList (\n -> toDeclInit aliasesExtended gExtended recursiveVars flatBindings n cx g) names) (\inits -> Eithers.bind (Eithers.mapList (\n -> toDeclStatement envExtended aliasesExtended gExtended recursiveVars thunkedVars flatBindings n cx g) names) (\decls -> Right (Lists.concat2 (Optionals.givens inits) decls)))) sorted) (\groups -> Right (Lists.concat groups, envExtended))))--boundTypeVariables :: Core.Type -> [Core.Name]-boundTypeVariables typ =-    case typ of-      Core.TypeAnnotated v0 -> boundTypeVariables (Core.annotatedTypeBody v0)-      Core.TypeForall v0 -> Lists.cons (Core.forallTypeParameter v0) (boundTypeVariables (Core.forallTypeBody v0))-      _ -> []--buildArgSubst :: S.Set Core.Name -> [Core.Type] -> [t0] -> M.Map Core.Name t0-buildArgSubst schemeVarSet schemeDoms argTypes =-    Maps.fromList (Lists.bind (Lists.zip schemeDoms argTypes) (\p ->-      let sdom = Pairs.first p-          argType = Pairs.second p-      in case (Strip.deannotateType sdom) of-        Core.TypeVariable v0 -> Logic.ifElse (Sets.member v0 schemeVarSet) [-          (v0, argType)] []-        _ -> []))--buildCurriedLambda :: [Core.Name] -> Syntax.Expression -> Syntax.Expression-buildCurriedLambda params inner = Lists.foldl (\acc -> \p -> Utils.javaLambda p acc) inner (Lists.reverse params)--buildSubstFromAnnotations :: S.Set Core.Name -> Core.Term -> t0 -> Graph.Graph -> Either t1 (M.Map Core.Name Core.Name)-buildSubstFromAnnotations schemeVarSet term cx g = Right (buildSubstFromAnnotations_go schemeVarSet g term)--buildSubstFromAnnotations_go :: S.Set Core.Name -> Graph.Graph -> Core.Term -> M.Map Core.Name Core.Name-buildSubstFromAnnotations_go schemeVarSet g term =-    case term of-      Core.TermAnnotated v0 ->-        let body = Core.annotatedTermBody v0-            anns = Annotations.getAnnotationMap (Core.annotatedTermAnnotation v0)-            bodySubst = buildSubstFromAnnotations_go schemeVarSet g body-            annSubst =-                    Optionals.match (Maps.lookup Constants.keyType anns) Maps.empty (\typeTerm -> Eithers.either (\_ -> Maps.empty) (\annType -> case (Strip.deannotateTerm body) of-                      Core.TermLambda v1 -> Optionals.match (Core.lambdaDomain v1) Maps.empty (\dom -> case (Strip.deannotateType annType) of-                        Core.TypeFunction v2 -> buildTypeVarSubst schemeVarSet (Core.functionTypeDomain v2) dom-                        _ -> Maps.empty)-                      _ -> Maps.empty) (DecodeCore.type_ g typeTerm))-        in (Maps.union annSubst bodySubst)-      Core.TermApplication v0 -> Maps.union (buildSubstFromAnnotations_go schemeVarSet g (Core.applicationFunction v0)) (buildSubstFromAnnotations_go schemeVarSet g (Core.applicationArgument v0))-      Core.TermLambda v0 -> buildSubstFromAnnotations_go schemeVarSet g (Core.lambdaBody v0)-      Core.TermCases v0 ->-        let defSubst = Optionals.match (Core.caseStatementDefault v0) Maps.empty (\d -> buildSubstFromAnnotations_go schemeVarSet g d)-            caseSubsts =-                    Lists.foldl (\acc -> \fld -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Core.caseAlternativeHandler fld))) Maps.empty (Core.caseStatementCases v0)-        in (Maps.union defSubst caseSubsts)-      Core.TermLet v0 ->-        let bindingSubst =-                Lists.foldl (\acc -> \b -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Core.bindingTerm b))) Maps.empty (Core.letBindings v0)-        in (Maps.union bindingSubst (buildSubstFromAnnotations_go schemeVarSet g (Core.letBody v0)))-      Core.TermList v0 -> Lists.foldl (\acc -> \t -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g t)) Maps.empty v0-      Core.TermOptional v0 -> Optionals.match v0 Maps.empty (\t -> buildSubstFromAnnotations_go schemeVarSet g t)-      Core.TermPair v0 -> Maps.union (buildSubstFromAnnotations_go schemeVarSet g (Pairs.first v0)) (buildSubstFromAnnotations_go schemeVarSet g (Pairs.second v0))-      Core.TermRecord v0 -> Lists.foldl (\acc -> \fld -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Core.fieldTerm fld))) Maps.empty (Core.recordFields v0)-      Core.TermSet v0 -> Lists.foldl (\acc -> \t -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g t)) Maps.empty (Sets.toList v0)-      Core.TermTypeApplication v0 -> buildSubstFromAnnotations_go schemeVarSet g (Core.typeApplicationTermBody v0)-      Core.TermTypeLambda v0 -> buildSubstFromAnnotations_go schemeVarSet g (Core.typeLambdaBody v0)-      Core.TermEither v0 -> Eithers.either (\t -> buildSubstFromAnnotations_go schemeVarSet g t) (\t -> buildSubstFromAnnotations_go schemeVarSet g t) v0-      _ -> Maps.empty--buildTypeSubst :: S.Set Core.Name -> Core.Type -> Core.Type -> M.Map Core.Name Core.Type-buildTypeSubst schemeVarSet schemeType actualType =-    buildTypeSubst_go schemeVarSet (Strip.deannotateType schemeType) (Strip.deannotateType actualType)--buildTypeSubst_go :: S.Set Core.Name -> Core.Type -> Core.Type -> M.Map Core.Name Core.Type-buildTypeSubst_go svs st at =--      let goSub = \a -> \b -> buildTypeSubst_go svs (Strip.deannotateType a) (Strip.deannotateType b)-      in case st of-        Core.TypeVariable v0 -> Logic.ifElse (Sets.member v0 svs) (Maps.singleton v0 at) Maps.empty-        Core.TypeFunction v0 -> case at of-          Core.TypeFunction v1 -> Maps.union (goSub (Core.functionTypeDomain v0) (Core.functionTypeDomain v1)) (goSub (Core.functionTypeCodomain v0) (Core.functionTypeCodomain v1))-          _ -> Maps.empty-        Core.TypeApplication v0 -> case at of-          Core.TypeApplication v1 -> Maps.union (goSub (Core.applicationTypeFunction v0) (Core.applicationTypeFunction v1)) (goSub (Core.applicationTypeArgument v0) (Core.applicationTypeArgument v1))-          _ -> Maps.empty-        Core.TypeList v0 -> case at of-          Core.TypeList v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeSet v0 -> case at of-          Core.TypeSet v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeOptional v0 -> case at of-          Core.TypeOptional v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeMap v0 -> case at of-          Core.TypeMap v1 -> Maps.union (goSub (Core.mapTypeKeys v0) (Core.mapTypeKeys v1)) (goSub (Core.mapTypeValues v0) (Core.mapTypeValues v1))-          _ -> Maps.empty-        Core.TypePair v0 -> case at of-          Core.TypePair v1 -> Maps.union (goSub (Core.pairTypeFirst v0) (Core.pairTypeFirst v1)) (goSub (Core.pairTypeSecond v0) (Core.pairTypeSecond v1))-          _ -> Maps.empty-        Core.TypeEither v0 -> case at of-          Core.TypeEither v1 -> Maps.union (goSub (Core.eitherTypeLeft v0) (Core.eitherTypeLeft v1)) (goSub (Core.eitherTypeRight v0) (Core.eitherTypeRight v1))-          _ -> Maps.empty-        Core.TypeForall v0 -> case at of-          Core.TypeForall v1 -> goSub (Core.forallTypeBody v0) (Core.forallTypeBody v1)-          _ -> goSub (Core.forallTypeBody v0) at-        _ -> Maps.empty--buildTypeVarSubst :: S.Set Core.Name -> Core.Type -> Core.Type -> M.Map Core.Name Core.Name-buildTypeVarSubst schemeVarSet freshTyp canonTyp =-    buildTypeVarSubst_go schemeVarSet (Strip.deannotateType freshTyp) (Strip.deannotateType canonTyp)--buildTypeVarSubst_go :: S.Set Core.Name -> Core.Type -> Core.Type -> M.Map Core.Name Core.Name-buildTypeVarSubst_go svs ft ct =--      let goSub = \a -> \b -> buildTypeVarSubst_go svs (Strip.deannotateType a) (Strip.deannotateType b)-      in case ft of-        Core.TypeVariable v0 -> case ct of-          Core.TypeVariable v1 -> Logic.ifElse (Logic.and (Logic.not (Equality.equal v0 v1)) (Sets.member v1 svs)) (Maps.singleton v0 v1) Maps.empty-          _ -> Maps.empty-        Core.TypeFunction v0 -> case ct of-          Core.TypeFunction v1 -> Maps.union (goSub (Core.functionTypeDomain v0) (Core.functionTypeDomain v1)) (goSub (Core.functionTypeCodomain v0) (Core.functionTypeCodomain v1))-          _ -> Maps.empty-        Core.TypeApplication v0 -> case ct of-          Core.TypeApplication v1 -> Maps.union (goSub (Core.applicationTypeFunction v0) (Core.applicationTypeFunction v1)) (goSub (Core.applicationTypeArgument v0) (Core.applicationTypeArgument v1))-          _ -> Maps.empty-        Core.TypeList v0 -> case ct of-          Core.TypeList v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeSet v0 -> case ct of-          Core.TypeSet v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeOptional v0 -> case ct of-          Core.TypeOptional v1 -> goSub v0 v1-          _ -> Maps.empty-        Core.TypeMap v0 -> case ct of-          Core.TypeMap v1 -> Maps.union (goSub (Core.mapTypeKeys v0) (Core.mapTypeKeys v1)) (goSub (Core.mapTypeValues v0) (Core.mapTypeValues v1))-          _ -> Maps.empty-        Core.TypePair v0 -> case ct of-          Core.TypePair v1 -> Maps.union (goSub (Core.pairTypeFirst v0) (Core.pairTypeFirst v1)) (goSub (Core.pairTypeSecond v0) (Core.pairTypeSecond v1))-          _ -> Maps.empty-        Core.TypeEither v0 -> case ct of-          Core.TypeEither v1 -> Maps.union (goSub (Core.eitherTypeLeft v0) (Core.eitherTypeLeft v1)) (goSub (Core.eitherTypeRight v0) (Core.eitherTypeRight v1))-          _ -> Maps.empty-        Core.TypeForall v0 -> case ct of-          Core.TypeForall v1 -> goSub (Core.forallTypeBody v0) (Core.forallTypeBody v1)-          _ -> buildTypeVarSubst_go svs (Strip.deannotateType (Core.forallTypeBody v0)) ct-        _ -> case ct of-          Core.TypeForall v0 -> buildTypeVarSubst_go svs ft (Strip.deannotateType (Core.forallTypeBody v0))-          _ -> Maps.empty--builderSetterName :: Core.Name -> String-builderSetterName fname =--      let base = Utils.sanitizeJavaName (Core.unName fname)-      in (Logic.ifElse (Logic.or (Equality.equal base "build") (Equality.equal base "builder")) (Strings.concat2 base "_") base)--classModsPublic :: [Syntax.ClassModifier]-classModsPublic = [-  Syntax.ClassModifierPublic]--classifyDataReference :: Core.Name -> t0 -> Graph.Graph -> Either Errors.Error JavaEnvironment.JavaSymbolClass-classifyDataReference name cx g =-    Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right JavaEnvironment.JavaSymbolClassLocalVariable) (\el -> Optionals.match (Core.bindingTypeScheme el) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "no type scheme for element " (Core.unName (Core.bindingName el)))))) (\ts -> Right (classifyDataTerm ts (Core.bindingTerm el)))))--classifyDataTerm :: Core.TypeScheme -> Core.Term -> JavaEnvironment.JavaSymbolClass-classifyDataTerm ts term =-    Logic.ifElse (Dependencies.isLambda term) (-      let n = classifyDataTerm_countLambdaParams term-      in (Logic.ifElse (Ordering.gt n 1) (JavaEnvironment.JavaSymbolClassHoistedLambda n) JavaEnvironment.JavaSymbolClassUnaryFunction)) (-      let hasTypeParams = Logic.not (Lists.isEmpty (Core.typeSchemeVariables ts))-      in (Logic.ifElse hasTypeParams (-        let n2 = classifyDataTerm_countLambdaParams (classifyDataTerm_stripTypeLambdas term)-        in (Logic.ifElse (Ordering.gt n2 0) (JavaEnvironment.JavaSymbolClassHoistedLambda n2) JavaEnvironment.JavaSymbolClassNullaryFunction)) JavaEnvironment.JavaSymbolClassNullaryFunction))--classifyDataTerm_countLambdaParams :: Core.Term -> Int-classifyDataTerm_countLambdaParams t =-    case (Strip.deannotateTerm t) of-      Core.TermLambda v0 -> Math.add 1 (classifyDataTerm_countLambdaParams (Core.lambdaBody v0))-      Core.TermLet v0 -> classifyDataTerm_countLambdaParams (Core.letBody v0)-      _ -> 0--classifyDataTerm_stripTypeLambdas :: Core.Term -> Core.Term-classifyDataTerm_stripTypeLambdas t =-    case (Strip.deannotateTerm t) of-      Core.TermTypeLambda v0 -> classifyDataTerm_stripTypeLambdas (Core.typeLambdaBody v0)-      _ -> t--cmpDeclStatement :: t0 -> Syntax.BlockStatement-cmpDeclStatement aliases =-    Utils.variableDeclarationStatement aliases Utils.javaIntType (Utils.javaIdentifier "cmp") (Utils.javaIntExpression 0)--cmpNotZeroExpr :: Syntax.Expression-cmpNotZeroExpr =-    Utils.javaEqualityExpressionToJavaExpression (Syntax.EqualityExpressionNotEqual (Syntax.EqualityExpression_Binary {-      Syntax.equalityExpression_BinaryLhs = lhs,-      Syntax.equalityExpression_BinaryRhs = rhs}))-  where-    lhs =-        Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionName (Syntax.ExpressionName {-          Syntax.expressionNameQualifier = Nothing,-          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")})))-    rhs =-        Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))--collectForallParams :: Core.Type -> [Core.Name]-collectForallParams t =-    case (Strip.deannotateType t) of-      Core.TypeForall v0 -> Lists.cons (Core.forallTypeParameter v0) (collectForallParams (Core.forallTypeBody v0))-      _ -> []--collectLambdaDomains :: Core.Term -> ([Core.Type], Core.Term)-collectLambdaDomains t =-    case (Strip.deannotateTerm t) of-      Core.TermLambda v0 -> Optionals.match (Core.lambdaDomain v0) ([], t) (\dom ->-        let rest = collectLambdaDomains (Core.lambdaBody v0)-        in (Lists.cons dom (Pairs.first rest), (Pairs.second rest)))-      _ -> ([], t)--collectTypeApps :: Core.Term -> [Core.Type] -> (Core.Term, [Core.Type])-collectTypeApps t acc =-    case (Strip.deannotateTerm t) of-      Core.TermTypeApplication v0 -> collectTypeApps (Core.typeApplicationTermBody v0) (Lists.cons (Core.typeApplicationTermType v0) acc)-      _ -> (Strip.deannotateTerm t, acc)--collectTypeApps0 :: Core.Term -> [Core.Type] -> (Core.Term, [Core.Type])-collectTypeApps0 t acc =-    case (Strip.deannotateTerm t) of-      Core.TermTypeApplication v0 -> collectTypeApps0 (Core.typeApplicationTermBody v0) (Lists.cons (Core.typeApplicationTermType v0) acc)-      _ -> (t, acc)--collectTypeVars :: Core.Type -> S.Set Core.Name-collectTypeVars typ = collectTypeVars_go (Strip.deannotateType typ)--collectTypeVars_go :: Core.Type -> S.Set Core.Name-collectTypeVars_go t =-    case t of-      Core.TypeVariable v0 -> Sets.singleton v0-      Core.TypeFunction v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Core.functionTypeDomain v0))) (collectTypeVars_go (Strip.deannotateType (Core.functionTypeCodomain v0)))-      Core.TypeApplication v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Core.applicationTypeFunction v0))) (collectTypeVars_go (Strip.deannotateType (Core.applicationTypeArgument v0)))-      Core.TypeList v0 -> collectTypeVars_go (Strip.deannotateType v0)-      Core.TypeSet v0 -> collectTypeVars_go (Strip.deannotateType v0)-      Core.TypeOptional v0 -> collectTypeVars_go (Strip.deannotateType v0)-      Core.TypeEffect v0 -> collectTypeVars_go (Strip.deannotateType v0)-      Core.TypeMap v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Core.mapTypeKeys v0))) (collectTypeVars_go (Strip.deannotateType (Core.mapTypeValues v0)))-      Core.TypePair v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Core.pairTypeFirst v0))) (collectTypeVars_go (Strip.deannotateType (Core.pairTypeSecond v0)))-      Core.TypeEither v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Core.eitherTypeLeft v0))) (collectTypeVars_go (Strip.deannotateType (Core.eitherTypeRight v0)))-      Core.TypeForall v0 -> collectTypeVars_go (Strip.deannotateType (Core.forallTypeBody v0))-      _ -> Sets.empty--collectionTypeArgs :: String -> Int -> JavaEnvironment.Aliases -> [M.Map Core.Name Core.Term] -> [Syntax.Type] -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]-collectionTypeArgs label n aliases anns tyapps cx g =-    Logic.ifElse (Logic.not (Lists.isEmpty tyapps)) (takeTypeArgs label n tyapps cx g) (-      let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Eithers.bind (Optionals.match mtyp (Right []) (\typ -> case (Strip.deannotateType typ) of-        Core.TypeList v0 -> Right [-          v0]-        Core.TypeSet v0 -> Right [-          v0]-        Core.TypeOptional v0 -> Right [-          v0]-        Core.TypeMap v0 -> Right [-          Core.mapTypeKeys v0,-          (Core.mapTypeValues v0)]-        _ -> Right [])) (\compTypes -> Eithers.mapList (\ct -> Eithers.bind (encodeType aliases Sets.empty ct cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) compTypes))))--comparableCompareExpr :: String -> String -> Syntax.Expression-comparableCompareExpr otherVar fname =--      let thisField = Utils.javaIdentifierToJavaExpression (Syntax.Identifier (Utils.sanitizeJavaName fname))-          otherField =-                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))-      in (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.Comparing") (Syntax.Identifier "compare") [-        thisField,-        otherField]))--compareAndReturnStmts :: String -> Core.FieldType -> [Syntax.BlockStatement]-compareAndReturnStmts otherVar f =-    [-      Syntax.BlockStatementStatement (Utils.javaAssignmentStatement (Syntax.LeftHandSideExpressionName (Syntax.ExpressionName {-        Syntax.expressionNameQualifier = Nothing,-        Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")})) (compareFieldExpr otherVar f)),-      (Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {-        Syntax.ifThenStatementExpression = cmpNotZeroExpr,-        Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {-          Syntax.expressionNameQualifier = Nothing,-          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")}))))})))]--compareFieldExpr :: String -> Core.FieldType -> Syntax.Expression-compareFieldExpr otherVar ft =--      let fname = Core.unName (Core.fieldTypeName ft)-          ftype = Core.fieldTypeType ft-      in (Logic.ifElse (isBinaryType ftype) (arraysCompareExpr otherVar fname) (Logic.ifElse (isNonComparableType ftype) (hashCodeCompareExpr otherVar fname) (comparableCompareExpr otherVar fname)))--compareToBody :: t0 -> String -> [Core.FieldType] -> [Syntax.BlockStatement]-compareToBody aliases otherVar fields =--      let zeroStmts = [-            Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0)))]-      in (Optionals.withDefault zeroStmts (Optionals.map (\p ->-        let firstField = Pairs.first p-            restFields = Pairs.second p-        in (Logic.ifElse (Lists.isEmpty restFields) [-          Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (compareFieldExpr otherVar firstField)))] (Lists.concat2 [-          cmpDeclStatement aliases] (Lists.concat2 (Lists.concat (Lists.map (\f -> compareAndReturnStmts otherVar f) (Lists.cons firstField (Optionals.withDefault [] (Lists.init restFields))))) [-          Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (compareFieldExpr otherVar (Optionals.withDefault firstField (Lists.last restFields)))))])))) (Lists.uncons fields)))--compareToZeroClause :: String -> String -> Syntax.InclusiveOrExpression-compareToZeroClause tmpName fname =--      let compareToArg =-              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))-          compareToVar =-                  Syntax.MethodInvocation_VariantExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))-          compareToHeader =-                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                    Syntax.methodInvocation_ComplexVariant = compareToVar,-                    Syntax.methodInvocation_ComplexTypeArguments = [],-                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.compareToMethodName)})-          lhs =-                  Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {-                    Syntax.methodInvocationHeader = compareToHeader,-                    Syntax.methodInvocationArguments = [-                      compareToArg]})))-          rhs =-                  Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))-      in (Utils.javaEqualityExpressionToJavaInclusiveOrExpression (Syntax.EqualityExpressionEqual (Syntax.EqualityExpression_Binary {-        Syntax.equalityExpression_BinaryLhs = lhs,-        Syntax.equalityExpression_BinaryRhs = rhs})))--constantDecl :: String -> String -> JavaEnvironment.Aliases -> Core.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-constantDecl comment javaName aliases name cx g =--      let mods =-              [-                Syntax.FieldModifierPublic,-                Syntax.FieldModifierStatic,-                Syntax.FieldModifierFinal]-          nameName = Utils.nameToJavaName aliases (Core.Name "hydra.core.Name")-          env =-                  JavaEnvironment.JavaEnvironment {-                    JavaEnvironment.javaEnvironmentAliases = aliases,-                    JavaEnvironment.javaEnvironmentGraph = g}-      in (Eithers.bind (encodeType aliases Sets.empty (Core.TypeVariable (Core.Name "hydra.core.Name")) cx g) (\jt -> Eithers.bind (encodeTerm env (Core.TermLiteral (Core.LiteralString (Core.unName name))) cx g) (\arg ->-        let init =-                Syntax.VariableInitializerExpression (Utils.javaConstructorCall (Utils.javaConstructorName nameName Nothing) [-                  arg] Nothing)-            var = Utils.javaVariableDeclarator (Syntax.Identifier javaName) (Just init)-        in (Right (withCommentString comment (Utils.javaMemberField mods jt var))))))--constantDeclForFieldType :: Core.Name -> JavaEnvironment.Aliases -> Core.FieldType -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-constantDeclForFieldType parentName aliases ftyp cx g =--      let name = Core.fieldTypeName ftyp-          javaName =-                  Formatting.nonAlnumToUnderscores (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionUpperSnake (Core.unName name))-          comment =-                  Strings.concat [-                    "Name of the {@code ",-                    (Core.unName parentName),-                    ".",-                    (Core.unName name),-                    "} field."]-      in (constantDecl comment javaName aliases name cx g)--constantDeclForTypeName :: JavaEnvironment.Aliases -> Core.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-constantDeclForTypeName aliases name cx g =--      let comment =-              Strings.concat [-                "Name of the {@code ",-                (Core.unName name),-                "} type."]-      in (constantDecl comment "TYPE_" aliases name cx g)--constructElementsInterface :: Packaging.Module -> [Syntax.InterfaceMemberDeclarationWithComments] -> (Core.Name, Syntax.CompilationUnit)-constructElementsInterface mod members =--      let ns = Packaging.moduleName mod-          parentNs = namespaceParent ns-          pkg = Optionals.match parentNs (Utils.javaPackageDeclaration ns) (\pns -> Utils.javaPackageDeclaration pns)-          mods = [-                Syntax.InterfaceModifierPublic]-          className = elementsClassName ns-          elName = elementsQualifiedName ns-          body = Syntax.InterfaceBody members-          itf =-                  Syntax.TopLevelClassOrInterfaceDeclarationInterface (Syntax.InterfaceDeclarationNormalInterface (Syntax.NormalInterfaceDeclaration {-                    Syntax.normalInterfaceDeclarationModifiers = mods,-                    Syntax.normalInterfaceDeclarationIdentifier = (Utils.javaTypeIdentifier className),-                    Syntax.normalInterfaceDeclarationParameters = [],-                    Syntax.normalInterfaceDeclarationExtends = [],-                    Syntax.normalInterfaceDeclarationPermits = [],-                    Syntax.normalInterfaceDeclarationBody = body}))-          decl =-                  Syntax.TopLevelClassOrInterfaceDeclarationWithComments {-                    Syntax.topLevelClassOrInterfaceDeclarationWithCommentsValue = itf,-                    Syntax.topLevelClassOrInterfaceDeclarationWithCommentsComments = (Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em))}-      in (-        elName,-        (Syntax.CompilationUnitOrdinary (Syntax.OrdinaryCompilationUnit {-          Syntax.ordinaryCompilationUnitPackage = (Just pkg),-          Syntax.ordinaryCompilationUnitImports = [],-          Syntax.ordinaryCompilationUnitTypes = [-            decl]})))--correctCastType :: Core.Term -> [Core.Type] -> Core.Type -> t0 -> t1 -> Either t2 Core.Type-correctCastType innerBody typeArgs fallback cx g =-    case (Strip.deannotateTerm innerBody) of-      Core.TermPair _ -> Logic.ifElse (Equality.equal (Lists.length typeArgs) 2) (Right (Core.TypePair (Core.PairType {-        Core.pairTypeFirst = (Optionals.withDefault fallback (Lists.at 0 typeArgs)),-        Core.pairTypeSecond = (Optionals.withDefault fallback (Lists.at 1 typeArgs))}))) (Right fallback)-      _ -> Right fallback--correctTypeApps :: t0 -> Core.Name -> [Core.Term] -> [Core.Type] -> t1 -> Graph.Graph -> Either Errors.Error [Core.Type]-correctTypeApps gr name args fallbackTypeApps cx g =-    Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right fallbackTypeApps) (\el -> Optionals.match (Core.bindingTypeScheme el) (Right fallbackTypeApps) (\ts ->-      let schemeType = Core.typeSchemeBody ts-          allSchemeVars = Lists.filter (\v -> isSimpleName v) (Core.typeSchemeVariables ts)-          schemeTypeVars = collectTypeVars schemeType-          usedFlags = Lists.map (\v -> Sets.member v schemeTypeVars) allSchemeVars-          usedSchemeVars = filterByFlags allSchemeVars usedFlags-          nParams = countFunctionParams schemeType-          peeled = peelDomainTypes nParams schemeType-          calleeDoms = Pairs.first peeled-          calleeCod = Pairs.second peeled-          overgenSubst = detectAccumulatorUnification calleeDoms calleeCod usedSchemeVars-          keepFlags =-                  Lists.map (\v -> Logic.and (Sets.member v schemeTypeVars) (Logic.not (Maps.member v overgenSubst))) allSchemeVars-          schemeVars = filterByFlags allSchemeVars keepFlags-          filteredFallback0 =-                  Logic.ifElse (Equality.equal (Lists.length allSchemeVars) (Lists.length fallbackTypeApps)) (filterByFlags fallbackTypeApps keepFlags) fallbackTypeApps-          filteredFallback =-                  Logic.ifElse (Maps.isEmpty overgenSubst) filteredFallback0 (Lists.map (\t -> substituteTypeVarsWithTypes overgenSubst t) filteredFallback0)-      in (Logic.ifElse (Logic.or (Lists.isEmpty schemeVars) (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length filteredFallback)))) (Right filteredFallback) (correctTypeAppsWithArgs schemeVars filteredFallback schemeType args cx g)))))--correctTypeAppsWithArgs :: [Core.Name] -> [Core.Type] -> Core.Type -> [Core.Term] -> t0 -> Graph.Graph -> Either Errors.Error [Core.Type]-correctTypeAppsWithArgs schemeVars fallbackTypeApps schemeType args cx g =--      let schemeVarSet = Sets.fromList schemeVars-          irSubst = Maps.fromList (Lists.zip schemeVars fallbackTypeApps)-          peeled = peelDomainTypes (Lists.length args) schemeType-          schemeDoms = Pairs.first peeled-      in (Eithers.bind (Eithers.mapList (\arg -> Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal arg))) args) (\mArgTypes -> Logic.ifElse (Logic.not (Lists.isEmpty (Lists.filter (\m -> Optionals.isNone m) mArgTypes))) (Right fallbackTypeApps) (-        let argTypes = Lists.bind mArgTypes (\m -> Optionals.match m [] (\x -> Lists.singleton x))-            irDoms = Lists.map (\d -> applySubstSimple irSubst d) schemeDoms-            domsMatch =-                    Lists.isEmpty (Lists.filter (\p -> Logic.not (typesMatch (Strip.deannotateType (Pairs.first p)) (Strip.deannotateType (Pairs.second p)))) (Lists.zip irDoms argTypes))-        in (Logic.ifElse domsMatch (Right fallbackTypeApps) (Right (resolveTypeApps schemeVars fallbackTypeApps (buildArgSubst schemeVarSet schemeDoms argTypes)))))))--countFunctionParams :: Core.Type -> Int-countFunctionParams t =-    case (Strip.deannotateType t) of-      Core.TypeFunction v0 -> Math.add 1 (countFunctionParams (Core.functionTypeCodomain v0))-      _ -> 0--declarationForRecordType :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> [Core.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration-declarationForRecordType isInner isSer aliases tparams elName fields cx g =-    declarationForRecordType_ isInner isSer aliases tparams elName Nothing Nothing fields cx g--declarationForRecordType_ :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> Maybe Core.Name -> Maybe Int -> [Core.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration-declarationForRecordType_ isInner isSer aliases tparams elName parentName ordinal fields cx g =-    Eithers.bind (Eithers.mapList (\f -> recordMemberVar aliases f cx g) fields) (\memberVars -> Eithers.bind (Eithers.mapList (\p -> addComment (Pairs.first p) (Pairs.second p) cx g) (Lists.zip memberVars fields)) (\memberVars_ ->-      let elNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases elName)-          linkTargetStr =-                  Optionals.match parentName elNameStr (\pn -> Strings.concat2 (Strings.concat2 (Syntax.unIdentifier (Utils.nameToJavaName aliases pn)) ".") (Utils.sanitizeJavaName (Util.qualifiedNameLocal (Names.qualifyName elName))))-      in (Eithers.bind (Logic.ifElse (Ordering.gt (Lists.length fields) 1) (Eithers.mapList (\f -> Eithers.bind (recordWithMethod aliases elName fields f cx g) (\decl ->-        let fname = Core.unName (Core.fieldTypeName f)-            comment =-                    Strings.concat [-                      "Returns a copy of this {@link ",-                      linkTargetStr,-                      "} with {@code ",-                      fname,-                      "} replaced."]-        in (Right (withCommentString comment decl)))) fields) (Right [])) (\withMethods -> Eithers.bind (recordConstructor aliases elName fields cx g) (\cons -> Eithers.bind (Eithers.mapList (\f ->-        let fname = Utils.sanitizeJavaName (Core.unName (Core.fieldTypeName f))-        in (Eithers.bind (Annotations.commentsFromFieldType cx g f) (\mDoc -> Right (Optionals.match mDoc "" (\d -> Strings.concat [-          "@param ",-          fname,-          " ",-          d]))))) fields) (\paramLines ->-        let nonEmptyParamLines = Lists.filter (\l -> Logic.not (Equality.equal l "")) paramLines-            consBaseComment =-                    Strings.concat [-                      "Constructs an immutable {@link ",-                      linkTargetStr,-                      "}."]-            consComment =-                    Logic.ifElse (Lists.isEmpty nonEmptyParamLines) consBaseComment (Strings.concat [-                      consBaseComment,-                      "\n\n",-                      (Strings.join "\n" nonEmptyParamLines)])-            consWithComment = withCommentString consComment cons-        in (Eithers.bind (Logic.ifElse isInner (Right []) (Eithers.bind (constantDeclForTypeName aliases elName cx g) (\d -> Eithers.bind (Eithers.mapList (\f -> constantDeclForFieldType elName aliases f cx g) fields) (\dfields -> Right (Lists.cons d dfields))))) (\tn -> Eithers.bind (Logic.ifElse isInner (Right []) (recordBuilderClass aliases tparams elName fields cx g)) (\builderDecls ->-          let comparableMethods =-                  Optionals.match parentName (Logic.ifElse (Logic.and (Logic.not isInner) isSer) [-                    recordCompareToMethod aliases tparams elName fields] []) (\pn -> Logic.ifElse isSer (variantCompareToMethod aliases tparams pn elName (Optionals.withDefault 0 ordinal) fields) [])-              noCommentMethods =-                      Lists.map (\x -> noComment x) (Lists.concat2 [-                        recordEqualsMethod aliases elName fields,-                        (recordHashCodeMethod fields),-                        (recordToStringMethod elName fields)] comparableMethods)-              bodyDecls =-                      Lists.concat [-                        tn,-                        memberVars_,-                        [-                          consWithComment],-                        noCommentMethods,-                        withMethods,-                        builderDecls]-              ifaces = Logic.ifElse isInner (serializableTypes isSer) (interfaceTypes isSer aliases tparams elName)-          in (Right (Utils.javaClassDeclaration aliases tparams elName classModsPublic Nothing ifaces bodyDecls)))))))))))--declarationForUnionType :: Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> [Core.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration-declarationForUnionType isSer aliases tparams elName fields cx g =-    Eithers.bind (Eithers.mapList (\ftord ->-      let ft = Pairs.first ftord-          ordinal = Pairs.second ftord-          fname = Core.fieldTypeName ft-          ftype = Core.fieldTypeType ft-          rfields =-                  Logic.ifElse (Predicates.isUnitType (Strip.deannotateType ftype)) [] [-                    Core.FieldType {-                      Core.fieldTypeName = (Core.Name "value"),-                      Core.fieldTypeType = (Strip.deannotateType ftype)}]-          varName = Utils.variantClassName False elName fname-      in (Eithers.bind (declarationForRecordType_ True isSer aliases [] varName (Logic.ifElse isSer (Just elName) Nothing) (Logic.ifElse isSer (Just ordinal) Nothing) rfields cx g) (\innerDecl -> Right (augmentVariantClass aliases tparams elName innerDecl)))) (Lists.zip fields (Math.range 0 (Lists.length fields)))) (\variantClasses ->-      let variantDecls =-              Lists.map (\vc -> Syntax.ClassBodyDeclarationClassMember (Syntax.ClassMemberDeclarationClass vc)) variantClasses-      in (Eithers.bind (Eithers.mapList (\pair -> addComment (Pairs.first pair) (Pairs.second pair) cx g) (Lists.zip variantDecls fields)) (\variantDecls_ ->-        let privateConst = Utils.makeConstructor aliases elName True [] []-            acceptDecl = Utils.toAcceptMethod True tparams-            vtparams = Lists.concat2 tparams [-                  Utils.javaTypeParameter JavaNames.visitorReturnParameter]-            elNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases elName)-            visitorMethods =-                    Lists.map (\ft ->-                      let fname = Core.fieldTypeName ft-                          fnameStr = Core.unName fname-                          typeArgs = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams-                          varName = Utils.variantClassName False elName fname-                          varNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases varName)-                          varLocalStr = Utils.sanitizeJavaName (Util.qualifiedNameLocal (Names.qualifyName varName))-                          linkVarNameStr = Strings.concat2 (Strings.concat2 elNameStr ".") varLocalStr-                          varRef = Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs varName Nothing)-                          param = Utils.javaTypeToJavaFormalParameter varRef (Core.Name "instance")-                          resultR = Utils.javaTypeToJavaResult (Syntax.TypeReference Utils.visitorTypeVariable)-                          comment =-                                  Strings.concat [-                                    "Visit the {@link ",-                                    linkVarNameStr,-                                    "} case."]-                      in (comment, (Utils.interfaceMethodDeclaration [] [] JavaNames.visitMethodName [-                        param] resultR Nothing))) fields-            visitorBody =-                    Syntax.InterfaceBody (Lists.map (\p -> withInterfaceCommentString (Pairs.first p) (Pairs.second p)) visitorMethods)-            visitor =-                    Utils.javaInterfaceDeclarationToJavaClassBodyDeclaration (Syntax.NormalInterfaceDeclaration {-                      Syntax.normalInterfaceDeclarationModifiers = [-                        Syntax.InterfaceModifierPublic],-                      Syntax.normalInterfaceDeclarationIdentifier = (Syntax.TypeIdentifier (Syntax.Identifier JavaNames.visitorName)),-                      Syntax.normalInterfaceDeclarationParameters = vtparams,-                      Syntax.normalInterfaceDeclarationExtends = [],-                      Syntax.normalInterfaceDeclarationPermits = [],-                      Syntax.normalInterfaceDeclarationBody = visitorBody})-            typeArgs = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams-            visitorClassType =-                    Utils.javaClassType (Lists.concat2 (Lists.map (\tp -> Utils.typeParameterToReferenceType tp) tparams) [-                      Utils.visitorTypeVariable]) Nothing JavaNames.visitorName-            mainInstanceParam =-                    Utils.javaTypeToJavaFormalParameter (Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs elName Nothing)) (Core.Name "instance")-            resultR = Utils.javaTypeToJavaResult (Syntax.TypeReference Utils.visitorTypeVariable)-            throwStmt =-                    Syntax.BlockStatementStatement (Utils.javaThrowIllegalStateException [-                      Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions [-                        Utils.javaStringMultiplicativeExpression "Non-exhaustive patterns when matching: ",-                        (Syntax.MultiplicativeExpressionUnary (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier "instance")))])])-            defaultMod = [-                  Syntax.InterfaceMethodModifierDefault]-            otherwiseDecl =-                    Utils.interfaceMethodDeclaration defaultMod [] JavaNames.otherwiseMethodName [-                      mainInstanceParam] resultR (Just [-                      throwStmt])-            otherwiseComment = "Default branch for unhandled cases."-            pvVisitMethods =-                    Lists.map (\ft ->-                      let fname = Core.fieldTypeName ft-                          varName = Utils.variantClassName False elName fname-                          varNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases varName)-                          varLocalStr = Utils.sanitizeJavaName (Util.qualifiedNameLocal (Names.qualifyName varName))-                          linkVarNameStr = Strings.concat2 (Strings.concat2 elNameStr ".") varLocalStr-                          varRef = Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs varName Nothing)-                          param = Utils.javaTypeToJavaFormalParameter varRef (Core.Name "instance")-                          mi =-                                  Utils.methodInvocation Nothing (Syntax.Identifier JavaNames.otherwiseMethodName) [-                                    Utils.javaIdentifierToJavaExpression (Syntax.Identifier "instance")]-                          returnOtherwise =-                                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaPrimaryToJavaExpression (Utils.javaMethodInvocationToJavaPrimary mi))))-                          comment =-                                  Strings.concat [-                                    "Visit the {@link ",-                                    linkVarNameStr,-                                    "} case."]-                      in (-                        comment,-                        (Utils.interfaceMethodDeclaration defaultMod [] JavaNames.visitMethodName [-                          param] resultR (Just [-                          returnOtherwise])))) fields-            pvBody =-                    Syntax.InterfaceBody (Lists.cons (withInterfaceCommentString otherwiseComment otherwiseDecl) (Lists.map (\p -> withInterfaceCommentString (Pairs.first p) (Pairs.second p)) pvVisitMethods))-            partialVisitor =-                    Utils.javaInterfaceDeclarationToJavaClassBodyDeclaration (Syntax.NormalInterfaceDeclaration {-                      Syntax.normalInterfaceDeclarationModifiers = [-                        Syntax.InterfaceModifierPublic],-                      Syntax.normalInterfaceDeclarationIdentifier = (Syntax.TypeIdentifier (Syntax.Identifier JavaNames.partialVisitorName)),-                      Syntax.normalInterfaceDeclarationParameters = vtparams,-                      Syntax.normalInterfaceDeclarationExtends = [-                        Syntax.InterfaceType visitorClassType],-                      Syntax.normalInterfaceDeclarationPermits = [],-                      Syntax.normalInterfaceDeclarationBody = pvBody})-        in (Eithers.bind (constantDeclForTypeName aliases elName cx g) (\tn0 -> Eithers.bind (Eithers.mapList (\ft -> constantDeclForFieldType elName aliases ft cx g) fields) (\tn1 ->-          let tn = Lists.concat2 [-                tn0] tn1-              privateConstComment =-                      Strings.concat [-                        "Constructs an immutable {@link ",-                        elNameStr,-                        "}."]-              acceptComment = "Dispatch to {@code visitor}."-              visitorIfaceComment =-                      Strings.concat [-                        "Visitor over {@link ",-                        elNameStr,-                        "}."]-              partialVisitorIfaceComment =-                      Strings.concat [-                        "Partial visitor over {@link ",-                        elNameStr,-                        "} with a default {@link #otherwise} branch."]-              hydraOrdinalAbstractDecls = Logic.ifElse isSer [-                    noComment (hydraOrdinalMethod Nothing)] []-              otherDecls =-                      Lists.concat2 [-                        withCommentString privateConstComment privateConst,-                        (withCommentString acceptComment acceptDecl),-                        (withCommentString visitorIfaceComment visitor),-                        (withCommentString partialVisitorIfaceComment partialVisitor)] hydraOrdinalAbstractDecls-              bodyDecls =-                      Lists.concat [-                        tn,-                        otherDecls,-                        variantDecls_]-              mods = Lists.concat2 classModsPublic [-                    Syntax.ClassModifierAbstract]-          in (Right (Utils.javaClassDeclaration aliases tparams elName mods Nothing (interfaceTypes isSer aliases tparams elName) bodyDecls))))))))--decodeTypeFromTerm :: Core.Term -> Maybe Core.Type-decodeTypeFromTerm term =-    case (Strip.deannotateTerm term) of-      Core.TermInject v0 -> Logic.ifElse (Equality.equal (Core.injectionTypeName v0) (Core.Name "hydra.core.Type")) (-        let fname = Core.unName (Core.fieldName (Core.injectionField v0))-            fterm = Core.fieldTerm (Core.injectionField v0)-        in (Logic.ifElse (Equality.equal fname "variable") (case fterm of-          Core.TermWrap v1 -> case (Core.wrappedTermBody v1) of-            Core.TermLiteral v2 -> case v2 of-              Core.LiteralString v3 -> Just (Core.TypeVariable (Core.Name v3))-              _ -> Nothing-            _ -> Nothing-          _ -> Nothing) (Logic.ifElse (Equality.equal fname "annotated") (case fterm of-          Core.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldName f) (Core.Name "body")) (Core.recordFields v1))) (\bodyField -> decodeTypeFromTerm (Core.fieldTerm bodyField))-          _ -> Nothing) (Logic.ifElse (Equality.equal fname "application") (case fterm of-          Core.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldName f) (Core.Name "function")) (Core.recordFields v1))) (\funcField -> Optionals.bind (decodeTypeFromTerm (Core.fieldTerm funcField)) (\func -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldName f) (Core.Name "argument")) (Core.recordFields v1))) (\argField -> Optionals.map (\arg -> Core.TypeApplication (Core.ApplicationType {-            Core.applicationTypeFunction = func,-            Core.applicationTypeArgument = arg})) (decodeTypeFromTerm (Core.fieldTerm argField)))))-          _ -> Nothing) (Logic.ifElse (Equality.equal fname "function") (case fterm of-          Core.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldName f) (Core.Name "domain")) (Core.recordFields v1))) (\domField -> Optionals.bind (decodeTypeFromTerm (Core.fieldTerm domField)) (\dom -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Core.fieldName f) (Core.Name "codomain")) (Core.recordFields v1))) (\codField -> Optionals.map (\cod -> Core.TypeFunction (Core.FunctionType {-            Core.functionTypeDomain = dom,-            Core.functionTypeCodomain = cod})) (decodeTypeFromTerm (Core.fieldTerm codField)))))-          _ -> Nothing) (Logic.ifElse (Equality.equal fname "literal") (case fterm of-          Core.TermInject v1 -> Logic.ifElse (Equality.equal (Core.unName (Core.fieldName (Core.injectionField v1))) "string") (Just (Core.TypeLiteral Core.LiteralTypeString)) Nothing-          _ -> Nothing) Nothing)))))) Nothing-      _ -> Nothing--dedupBindings :: S.Set Core.Name -> [Core.Binding] -> [Core.Binding]-dedupBindings inScope bs =-    Optionals.withDefault [] (Optionals.map (\p ->-      let b = Pairs.first p-          rest = Pairs.second p-          name = Core.bindingName b-      in (Logic.ifElse (Sets.member name inScope) (-        let newName = freshJavaName name inScope-            subst = Maps.singleton name newName-            rest2 =-                    Lists.map (\b2 -> Core.Binding {-                      Core.bindingName = (Core.bindingName b2),-                      Core.bindingTerm = (Variables.substituteVariables subst (Core.bindingTerm b2)),-                      Core.bindingTypeScheme = (Core.bindingTypeScheme b2)}) rest-        in (Lists.cons (Core.Binding {-          Core.bindingName = newName,-          Core.bindingTerm = (Core.bindingTerm b),-          Core.bindingTypeScheme = (Core.bindingTypeScheme b)}) (dedupBindings (Sets.insert newName inScope) rest2))) (Lists.cons b (dedupBindings (Sets.insert name inScope) rest)))) (Lists.uncons bs))--detectAccumulatorUnification :: [Core.Type] -> Core.Type -> [Core.Name] -> M.Map Core.Name Core.Type-detectAccumulatorUnification doms cod tparams =--      let tparamSet = Sets.fromList tparams-          allPairs = Lists.bind doms (\d -> extractInOutPair d)-          groupedByInput = groupPairsByFirst allPairs-          selfRefSubst = selfRefSubstitution groupedByInput-          directPairs = Lists.bind doms (\d -> extractDirectReturn tparamSet d)-          groupedDirect = groupPairsByFirst directPairs-          directInputVars = Sets.fromList (Lists.map (\p -> Pairs.first p) directPairs)-          codVar =-                  case (Strip.deannotateType cod) of-                    Core.TypeVariable v0 -> Just v0-                    _ -> Nothing-          directRefSubst = directRefSubstitution directInputVars codVar groupedDirect-          codSubst =-                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Maps.member cv selfRefSubst) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Logic.ifElse (Equality.equal cv refVar) Maps.empty (Maps.singleton cv refVar))))-          domVars = Sets.fromList (Lists.bind doms (\d -> Sets.toList (collectTypeVars d)))-          danglingSubst =-                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Sets.member cv domVars) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Maps.singleton cv (Core.TypeVariable refVar))))-      in (Maps.union (Maps.union (Maps.union (nameMapToTypeMap selfRefSubst) (nameMapToTypeMap codSubst)) danglingSubst) (nameMapToTypeMap directRefSubst))--directRefSubstitution :: (Eq t0, Ord t0) => (S.Set t0 -> Maybe t0 -> M.Map t0 [t0] -> M.Map t0 t0)-directRefSubstitution directInputVars codVar grouped =-    Lists.foldl (\subst -> \entry -> directRefSubstitution_processGroup directInputVars codVar subst (Pairs.first entry) (Pairs.second entry)) Maps.empty (Maps.toList grouped)--directRefSubstitution_processGroup :: (Eq t0, Ord t0) => (S.Set t0 -> Maybe t0 -> M.Map t0 t0 -> t0 -> [t0] -> M.Map t0 t0)-directRefSubstitution_processGroup directInputVars codVar subst inVar outVars =--      let selfRefCount = Lists.length (Lists.filter (\v -> Equality.equal v inVar) outVars)-          nonSelfVars = Lists.filter (\v -> Logic.not (Equality.equal v inVar)) outVars-          safeNonSelfVars =-                  Lists.filter (\v -> Logic.and (Logic.not (Sets.member v directInputVars)) (Logic.not (Equality.equal (Just v) codVar))) nonSelfVars-      in (Logic.ifElse (Logic.and (Ordering.gte selfRefCount 2) (Logic.not (Lists.isEmpty safeNonSelfVars))) (Lists.foldl (\s -> \v -> Maps.insert v inVar s) subst safeNonSelfVars) subst)--domTypeArgs :: JavaEnvironment.Aliases -> Core.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]-domTypeArgs aliases d cx g =--      let args = extractTypeApplicationArgs (Strip.deannotateType d)-      in (Logic.ifElse (Logic.not (Lists.isEmpty args)) (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) args) (Right (javaTypeArgumentsForType d)))--elementJavaIdentifier :: Bool -> Bool -> JavaEnvironment.Aliases -> Core.Name -> Syntax.Identifier-elementJavaIdentifier isPrim isMethod aliases name =--      let qn = Names.qualifyName name-          ns_ = Util.qualifiedNameModuleName qn-          local = Util.qualifiedNameLocal qn-          sep = Logic.ifElse isMethod "::" "."-      in (Logic.ifElse isPrim (Syntax.Identifier (Strings.concat2 (Strings.concat2 (elementJavaIdentifier_qualify aliases ns_ (Formatting.capitalize local)) ".") JavaNames.applyMethodName)) (Optionals.match ns_ (Syntax.Identifier (Utils.sanitizeJavaName local)) (\n -> Syntax.Identifier (Strings.concat2 (Strings.concat2 (elementJavaIdentifier_qualify aliases (namespaceParent n) (elementsClassName n)) sep) (Utils.sanitizeJavaName local)))))--elementJavaIdentifier_qualify :: JavaEnvironment.Aliases -> Maybe Packaging.ModuleName -> String -> String-elementJavaIdentifier_qualify aliases mns s =-    Syntax.unIdentifier (Utils.nameToJavaName aliases (Names.unqualifyName (Util.QualifiedName {-      Util.qualifiedNameModuleName = mns,-      Util.qualifiedNameLocal = s})))--elementsClassName :: Packaging.ModuleName -> String-elementsClassName ns =--      let nsStr = Packaging.unModuleName ns-          parts = Strings.splitOn "." nsStr-      in (Formatting.sanitizeWithUnderscores Language.reservedWords (Formatting.capitalize (Optionals.withDefault nsStr (Lists.last parts))))--elementsQualifiedName :: Packaging.ModuleName -> Core.Name-elementsQualifiedName ns =-    Names.unqualifyName (Util.QualifiedName {-      Util.qualifiedNameModuleName = (namespaceParent ns),-      Util.qualifiedNameLocal = (elementsClassName ns)})--encodeApplication :: JavaEnvironment.JavaEnvironment -> Core.Application -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeApplication env app cx g0 =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          g = JavaEnvironment.javaEnvironmentGraph env-          gathered = Analysis.gatherArgsWithTypeApps (Core.TermApplication app) [] []-          fun = Pairs.first gathered-          args = Pairs.first (Pairs.second gathered)-          typeApps = Pairs.second (Pairs.second gathered)-      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal fun))) (\mfunTyp -> Eithers.bind (Optionals.match mfunTyp (Checking.typeOfTerm cx g fun) (\t -> Right t)) (\funTyp ->-        let arity = Arity.typeArity funTyp-            deannotatedFun = Strip.deannotateTerm fun-            calleeName =-                    case deannotatedFun of-                      Core.TermVariable v0 -> Just v0-                      _ -> Nothing-        in (Eithers.bind (Optionals.match calleeName (Right args) (\cname -> annotateLambdaArgs cname typeApps args cx g)) (\annotatedArgs -> case deannotatedFun of-          Core.TermVariable v0 -> Logic.ifElse (Optionals.isGiven (Maps.lookup v0 (Graph.graphPrimitives g))) (-            let hargs = Lists.take arity annotatedArgs-                rargs = Lists.drop arity annotatedArgs-            in (Eithers.bind (functionCall env True v0 hargs [] cx g) (\initialCall -> Eithers.foldList (\acc -> \h -> Eithers.bind (encodeTerm env h cx g) (\jarg -> Right (applyJavaArg acc jarg))) initialCall rargs))) (Logic.ifElse (Logic.and (isRecursiveVariable aliases v0) (Logic.not (isLambdaBoundIn v0 (JavaEnvironment.aliasesLambdaVars aliases)))) (encodeApplication_fallback env aliases g typeApps (Core.applicationFunction app) (Core.applicationArgument app) cx g) (Eithers.bind (classifyDataReference v0 cx g) (\symClass ->-            let methodArity =-                    case symClass of-                      JavaEnvironment.JavaSymbolClassHoistedLambda v1 -> v1-                      _ -> arity-                hargs = Lists.take methodArity annotatedArgs-                rargs = Lists.drop methodArity annotatedArgs-                trusted = JavaEnvironment.aliasesTrustedTypeVars aliases-                inScope = JavaEnvironment.aliasesInScopeTypeParams aliases-                filteredTypeApps =-                        Logic.ifElse (Logic.or (Sets.isEmpty trusted) (Sets.isEmpty inScope)) [] (-                          let allVars = Sets.unions (Lists.map (\t -> collectTypeVars t) typeApps)-                          in (Logic.ifElse (Logic.not (Sets.isEmpty (Sets.difference allVars inScope))) [] (Logic.ifElse (Sets.isEmpty (Sets.difference allVars trusted)) typeApps [])))-            in (Eithers.bind (Logic.ifElse (Lists.isEmpty filteredTypeApps) (Right []) (correctTypeApps g v0 hargs filteredTypeApps cx g)) (\safeTypeApps -> Eithers.bind (filterPhantomTypeArgs v0 safeTypeApps cx g) (\finalTypeApps -> Eithers.bind (functionCall env False v0 hargs finalTypeApps cx g) (\initialCall -> Eithers.foldList (\acc -> \h -> Eithers.bind (encodeTerm env h cx g) (\jarg -> Right (applyJavaArg acc jarg))) initialCall rargs)))))))-          _ -> encodeApplication_fallback env aliases g typeApps (Core.applicationFunction app) (Core.applicationArgument app) cx g)))))--encodeApplication_fallback :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Graph.Graph -> [Core.Type] -> Core.Term -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeApplication_fallback env aliases gr typeApps lhs rhs cx g =-    Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal lhs))) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g lhs) (\typ -> Right typ)) (\t -> case (Strip.deannotateTypeParameters (Strip.deannotateType t)) of-      Core.TypeFunction v0 ->-        let dom = Core.functionTypeDomain v0-            cod = Core.functionTypeCodomain v0-            defaultExpr =-                    \_bug438_dflt -> Eithers.bind (encodeTerm env lhs cx g) (\jfun -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Right (applyJavaArg jfun jarg)))-            elimBranch =-                    \_bug438_elim -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Eithers.bind (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType dom))) (Right dom) (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal rhs))) (\mrt -> Optionals.match mrt (Eithers.bind (Checking.typeOfTerm cx g rhs) (\rt -> Right (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType rt))) rt dom))) (\rt -> Right (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType rt))) rt dom))))) (\enrichedDom -> encodeElimination env (Just jarg) enrichedDom cod (Strip.deannotateTerm lhs) cx g))-        in case (Strip.deannotateAndDetypeTerm lhs) of-          Core.TermProject _ -> elimBranch ()-          Core.TermCases _ -> elimBranch ()-          Core.TermUnwrap _ -> elimBranch ()-          _ -> defaultExpr ()-      _ -> Eithers.bind (encodeTerm env lhs cx g) (\jfun -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Right (applyJavaArg jfun jarg)))))--encodeDefinitions :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map Core.Name Syntax.CompilationUnit)-encodeDefinitions overlaySubs mod defs cx g =--      let aliases = Utils.importAliasesForModule overlaySubs mod-          env =-                  JavaEnvironment.JavaEnvironment {-                    JavaEnvironment.javaEnvironmentAliases = aliases,-                    JavaEnvironment.javaEnvironmentGraph = g}-          pkg = Utils.javaPackageDeclaration (Packaging.moduleName mod)-          partitioned = Environment.partitionDefinitions defs-          typeDefs = Pairs.first partitioned-          termDefs = Pairs.second partitioned-          nonTypedefDefs =-                  Lists.filter (\td ->-                    let typ = Core.typeSchemeBody (Packaging.typeDefinitionBody td)-                    in (isSerializableJavaType typ)) typeDefs-      in (Eithers.bind (Eithers.mapList (\td -> encodeTypeDefinition pkg aliases td cx g) nonTypedefDefs) (\typeUnits -> Eithers.bind (Logic.ifElse (Lists.isEmpty termDefs) (Right []) (Eithers.bind (Eithers.mapList (\td -> encodeTermDefinition env td cx g) termDefs) (\dataMembers -> Right [-        constructElementsInterface mod dataMembers]))) (\termUnits -> Right (Maps.fromList (Lists.concat2 typeUnits termUnits)))))--encodeElimination :: JavaEnvironment.JavaEnvironment -> Maybe Syntax.Expression -> Core.Type -> Core.Type -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeElimination env marg dom cod elimTerm cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-      in case (Strip.deannotateAndDetypeTerm elimTerm) of-        Core.TermProject v0 ->-          let fname = Core.projectionFieldName v0-          in (Eithers.bind (encodeType aliases Sets.empty dom cx g) (\jdom0 -> Eithers.bind (Utils.javaTypeToJavaReferenceType jdom0 cx) (\_ -> Optionals.match marg (-            let projVar = Core.Name "projected"-                jbody =-                        Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.variableToJavaIdentifier projVar) (Utils.javaIdentifier (Core.unName fname)))-            in (Right (Utils.javaLambda projVar jbody))) (\jarg ->-            let qual = Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary jarg)-            in (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {-              Syntax.fieldAccessQualifier = qual,-              Syntax.fieldAccessIdentifier = (Utils.javaIdentifier (Core.unName fname))})))))))-        Core.TermCases v0 ->-          let tname = Core.caseStatementTypeName v0-              def_ = Core.caseStatementDefault v0-              fields = Core.caseStatementCases v0-          in (Optionals.match marg (-            let uVar = Core.Name "u"-                domTypeArgs0 =-                        \ty -> \acc -> case (Strip.deannotateType ty) of-                          Core.TypeApplication v1 -> domTypeArgs0 (Core.applicationTypeFunction v1) (Lists.cons (Core.applicationTypeArgument v1) acc)-                          _ -> acc-                domTypeArgs = domTypeArgs0 dom []-                bareElim = Strip.deannotateAndDetypeTerm elimTerm-                wrappedElimTerm =-                        Lists.foldl (\trm -> \t -> Core.TermTypeApplication (Core.TypeApplicationTerm {-                          Core.typeApplicationTermBody = trm,-                          Core.typeApplicationTermType = t})) bareElim domTypeArgs-                typedLambda =-                        Core.TermLambda (Core.Lambda {-                          Core.lambdaParameter = uVar,-                          Core.lambdaDomain = (Just dom),-                          Core.lambdaBody = (Core.TermApplication (Core.Application {-                            Core.applicationFunction = wrappedElimTerm,-                            Core.applicationArgument = (Core.TermVariable uVar)}))})-            in (encodeTerm env typedLambda cx g)) (\jarg ->-            let prim = Utils.javaExpressionToJavaPrimary jarg-                consId = innerClassRef aliases tname JavaNames.partialVisitorName-                effectiveCod = cod-            in (Eithers.bind (encodeType aliases Sets.empty effectiveCod cx g) (\jcod -> Eithers.bind (Utils.javaTypeToJavaReferenceType jcod cx) (\rt -> Eithers.bind (domTypeArgs aliases dom cx g) (\domArgs ->-              let targs = typeArgsOrDiamond (Lists.concat2 domArgs [-                    Syntax.TypeArgumentReference rt])-              in (Eithers.bind (Optionals.match def_ (Right []) (\d -> Eithers.bind (otherwiseBranch env aliases dom cod tname jcod domArgs d cx g) (\b -> Right [-                b]))) (\otherwiseBranches -> Eithers.bind (Eithers.mapList (\f -> visitBranch env aliases dom tname jcod domArgs f cx g) fields) (\visitBranches ->-                let body = Syntax.ClassBody (Lists.concat2 otherwiseBranches visitBranches)-                    visitor = Utils.javaConstructorCall (Utils.javaConstructorName consId (Just targs)) [] (Just body)-                in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right prim)) (Syntax.Identifier JavaNames.acceptMethodName) [-                  visitor]))))))))))))-        Core.TermUnwrap _ ->-          let withArg =-                  \ja -> Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {-                    Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary ja)),-                    Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)})-          in (Right (Optionals.match marg (-            let wVar = Core.Name "wrapped"-                wArg = Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier wVar)-            in (Utils.javaLambda wVar (withArg wArg))) (\jarg -> withArg jarg)))-        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "unexpected " (Strings.concat2 "elimination case" (Strings.concat2 " in " "encodeElimination")))))--encodeFunction :: JavaEnvironment.JavaEnvironment -> Core.Type -> Core.Type -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeFunction env dom cod funTerm cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          encodeLambdaFallback =-                  \env2 -> \lam ->-                    let lambdaVar = Core.lambdaParameter lam-                        body = Core.lambdaBody lam-                    in (Eithers.bind (analyzeJavaFunction env2 body cx g) (\fs ->-                      let bindings = Typing.functionStructureBindings fs-                          innerBody = Typing.functionStructureBody fs-                          env3 = Typing.functionStructureEnvironment fs-                      in (Eithers.bind (bindingsToStatements env3 bindings cx g) (\bindResult ->-                        let bindingStmts = Pairs.first bindResult-                            env4 = Pairs.second bindResult-                        in (Eithers.bind (encodeTerm env4 innerBody cx g) (\jbody ->-                          let lam1 =-                                  Logic.ifElse (Lists.isEmpty bindings) (Utils.javaLambda lambdaVar jbody) (-                                    let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))-                                    in (Utils.javaLambdaFromBlock lambdaVar (Syntax.Block (Lists.concat2 bindingStmts [-                                      returnSt]))))-                          in (applyCastIfSafe aliases (Core.TypeFunction (Core.FunctionType {-                            Core.functionTypeDomain = dom,-                            Core.functionTypeCodomain = cod})) lam1 cx g)))))))-      in case (Strip.deannotateTerm funTerm) of-        Core.TermProject _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g-        Core.TermCases _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g-        Core.TermUnwrap _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g-        Core.TermLambda v0 -> withLambda env v0 (\env2 ->-          let lambdaVar = Core.lambdaParameter v0-              body = Core.lambdaBody v0-          in case (Strip.deannotateTerm body) of-            Core.TermLambda v1 -> case (Strip.deannotateType cod) of-              Core.TypeFunction v2 ->-                let dom2 = Core.functionTypeDomain v2-                    cod2 = Core.functionTypeCodomain v2-                in (Eithers.bind (encodeFunction env2 dom2 cod2 (Core.TermLambda v1) cx g) (\innerJavaLambda ->-                  let lam1 = Utils.javaLambda lambdaVar innerJavaLambda-                  in (applyCastIfSafe aliases (Core.TypeFunction (Core.FunctionType {-                    Core.functionTypeDomain = dom,-                    Core.functionTypeCodomain = cod})) lam1 cx g)))-              _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "expected function type for lambda body, but got: " (PrintCore.type_ cod))))-            _ -> encodeLambdaFallback env2 v0)-        _ -> Right (encodeLiteral (Core.LiteralString (Strings.concat2 "Unimplemented function variant: " (PrintCore.term funTerm))))--encodeFunctionFormTerm :: JavaEnvironment.JavaEnvironment -> [M.Map Core.Name Core.Term] -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeFunctionFormTerm env anns term cx g =--      let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Optionals.match (tryInferFunctionType term) (Checking.typeOfTerm cx g term) (\inferredType -> Right inferredType)) (\t -> Right t)) (\typ -> case (Strip.deannotateType typ) of-        Core.TypeFunction v0 -> encodeFunction env (Core.functionTypeDomain v0) (Core.functionTypeCodomain v0) term cx g-        _ -> encodeNullaryConstant env typ term cx g)))--encodeFunctionPrimitiveByName :: JavaEnvironment.JavaEnvironment -> Core.Type -> Core.Type -> Core.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeFunctionPrimitiveByName env dom cod name cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          classWithApply = Syntax.unIdentifier (elementJavaIdentifier True False aliases name)-          suffix = Strings.concat2 "." JavaNames.applyMethodName-          className =-                  Strings.fromList (Lists.take (Math.sub (Strings.length classWithApply) (Strings.length suffix)) (Strings.toList classWithApply))-          arity =-                  Arity.typeArity (Core.TypeFunction (Core.FunctionType {-                    Core.functionTypeDomain = dom,-                    Core.functionTypeCodomain = cod}))-      in (Logic.ifElse (Ordering.lte arity 1) (Right (Utils.javaIdentifierToJavaExpression (Syntax.Identifier (Strings.concat [-        className,-        "::",-        JavaNames.applyMethodName])))) (-        let paramNames = Lists.map (\i -> Core.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 arity)-            paramExprs = Lists.map (\p -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier p)) paramNames-            classId = Syntax.Identifier className-            call =-                    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic classId (Syntax.Identifier JavaNames.applyMethodName) paramExprs)-            curried = buildCurriedLambda paramNames call-        in (Eithers.bind (encodeType aliases Sets.empty (Core.TypeFunction (Core.FunctionType {-          Core.functionTypeDomain = dom,-          Core.functionTypeCodomain = cod})) cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression curried))))))))--encodeLiteral :: Core.Literal -> Syntax.Expression-encodeLiteral lit =-    case lit of-      Core.LiteralBinary v0 ->-        let byteValues = Literals.binaryToBytes v0-        in (Utils.javaArrayCreation Utils.javaBytePrimitiveType (Just (Utils.javaArrayInitializer (Lists.map (\w -> Utils.javaLiteralToJavaExpression (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int32ToBigint (Logic.ifElse (Ordering.gt w 127) (Math.sub w 256) w))))) byteValues))))-      Core.LiteralBoolean v0 -> encodeLiteral_litExp (Utils.javaBoolean v0)-      Core.LiteralDecimal v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigDecimal") Nothing) [-        encodeLiteral (Core.LiteralString (Literals.printDecimal v0))] Nothing-      Core.LiteralFloat v0 -> encodeLiteral_encodeFloat v0-      Core.LiteralInteger v0 -> encodeLiteral_encodeInteger v0-      Core.LiteralString v0 -> encodeLiteral_litExp (Utils.javaString v0)--encodeLiteralType :: Core.LiteralType -> t0 -> t1 -> Either t2 Syntax.Type-encodeLiteralType lt cx g =-    case lt of-      Core.LiteralTypeBinary -> Right (Syntax.TypeReference (Syntax.ReferenceTypeArray (Syntax.ArrayType {-        Syntax.arrayTypeDims = (Syntax.Dims [-          []]),-        Syntax.arrayTypeVariant = (Syntax.ArrayType_VariantPrimitive (Syntax.PrimitiveTypeWithAnnotations {-          Syntax.primitiveTypeWithAnnotationsType = (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeByte)),-          Syntax.primitiveTypeWithAnnotationsAnnotations = []}))})))-      Core.LiteralTypeBoolean -> encodeLiteralType_simple "Boolean" cx g-      Core.LiteralTypeDecimal -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [-        "java",-        "math"])) "BigDecimal")-      Core.LiteralTypeFloat v0 -> case v0 of-        Core.FloatTypeFloat32 -> encodeLiteralType_simple "Float" cx g-        Core.FloatTypeFloat64 -> encodeLiteralType_simple "Double" cx g-      Core.LiteralTypeInteger v0 -> case v0 of-        Core.IntegerTypeBigint -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [-          "java",-          "math"])) "BigInteger")-        Core.IntegerTypeInt8 -> encodeLiteralType_simple "Byte" cx g-        Core.IntegerTypeInt16 -> encodeLiteralType_simple "Short" cx g-        Core.IntegerTypeInt32 -> encodeLiteralType_simple "Integer" cx g-        Core.IntegerTypeInt64 -> encodeLiteralType_simple "Long" cx g-        Core.IntegerTypeUint8 -> encodeLiteralType_simple "Short" cx g-        Core.IntegerTypeUint16 -> encodeLiteralType_simple "Character" cx g-        Core.IntegerTypeUint32 -> encodeLiteralType_simple "Long" cx g-        Core.IntegerTypeUint64 -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [-          "java",-          "math"])) "BigInteger")-      Core.LiteralTypeString -> encodeLiteralType_simple "String" cx g--encodeLiteralType_simple :: String -> t0 -> t1 -> Either t2 Syntax.Type-encodeLiteralType_simple n cx g = Right (Utils.javaRefType [] Nothing n)--encodeLiteral_encodeFloat :: Core.FloatValue -> Syntax.Expression-encodeLiteral_encodeFloat f =-    case f of-      Core.FloatValueFloat32 v0 -> encodeLiteral_encodeFloat32 v0-      Core.FloatValueFloat64 v0 -> encodeLiteral_encodeFloat64 v0--encodeLiteral_encodeFloat32 :: Float -> Syntax.Expression-encodeLiteral_encodeFloat32 v =--      let s = Literals.printFloat32 v-      in (Logic.ifElse (Equality.equal s "NaN") (encodeLiteral_javaSpecialFloatExpr "Float" "NaN") (Logic.ifElse (Equality.equal s "Infinity") (encodeLiteral_javaSpecialFloatExpr "Float" "POSITIVE_INFINITY") (Logic.ifElse (Equality.equal s "-Infinity") (encodeLiteral_javaSpecialFloatExpr "Float" "NEGATIVE_INFINITY") (encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeFloatingPoint Syntax.FloatingPointTypeFloat)) (encodeLiteral_litExp (Syntax.LiteralFloatingPoint (Syntax.FloatingPointLiteral (Literals.float32ToFloat64 v))))))))--encodeLiteral_encodeFloat64 :: Double -> Syntax.Expression-encodeLiteral_encodeFloat64 v =--      let s = Literals.printFloat64 v-      in (Logic.ifElse (Equality.equal s "NaN") (encodeLiteral_javaSpecialFloatExpr "Double" "NaN") (Logic.ifElse (Equality.equal s "Infinity") (encodeLiteral_javaSpecialFloatExpr "Double" "POSITIVE_INFINITY") (Logic.ifElse (Equality.equal s "-Infinity") (encodeLiteral_javaSpecialFloatExpr "Double" "NEGATIVE_INFINITY") (Logic.ifElse (Equality.equal s "-0.0") (encodeLiteral_javaParseDouble "-0.0") (encodeLiteral_litExp (Syntax.LiteralFloatingPoint (Syntax.FloatingPointLiteral v)))))))--encodeLiteral_encodeInteger :: Core.IntegerValue -> Syntax.Expression-encodeLiteral_encodeInteger i =-    case i of-      Core.IntegerValueBigint v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigInteger") Nothing) [-        encodeLiteral (Core.LiteralString (Literals.printBigint v0))] Nothing-      Core.IntegerValueInt8 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeByte)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int8ToBigint v0))))-      Core.IntegerValueInt16 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeShort)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int16ToBigint v0))))-      Core.IntegerValueInt32 v0 -> encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int32ToBigint v0)))-      Core.IntegerValueInt64 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeLong)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int64ToBigint v0))))-      Core.IntegerValueUint8 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeShort)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.uint8ToBigint v0))))-      Core.IntegerValueUint16 v0 -> encodeLiteral_litExp (Syntax.LiteralCharacter v0)-      Core.IntegerValueUint32 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeLong)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.uint32ToBigint v0))))-      Core.IntegerValueUint64 v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigInteger") Nothing) [-        encodeLiteral (Core.LiteralString (Literals.printBigint (Literals.uint64ToBigint v0)))] Nothing--encodeLiteral_javaParseDouble :: String -> Syntax.Expression-encodeLiteral_javaParseDouble value =-    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "Double") (Syntax.Identifier "parseDouble") [-      encodeLiteral (Core.LiteralString value)])--encodeLiteral_javaSpecialFloatExpr :: String -> String -> Syntax.Expression-encodeLiteral_javaSpecialFloatExpr className fieldName =-    Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {-      Syntax.expressionNameQualifier = (Just (Syntax.AmbiguousName [-        Syntax.Identifier className])),-      Syntax.expressionNameIdentifier = (Syntax.Identifier fieldName)})--encodeLiteral_litExp :: Syntax.Literal -> Syntax.Expression-encodeLiteral_litExp l = Utils.javaLiteralToJavaExpression l--encodeLiteral_primCast :: Syntax.PrimitiveType -> Syntax.Expression -> Syntax.Expression-encodeLiteral_primCast pt expr =-    Utils.javaCastExpressionToJavaExpression (Utils.javaCastPrimitive pt (Utils.javaExpressionToJavaUnaryExpression expr))--encodeNullaryConstant :: t0 -> t1 -> Core.Term -> t2 -> t3 -> Either Errors.Error t4-encodeNullaryConstant env typ funTerm cx g =-    Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "unexpected " (Strings.concat2 "nullary function" (Strings.concat2 " in " (PrintCore.term funTerm))))))--encodeNullaryConstant_typeArgsFromReturnType :: JavaEnvironment.Aliases -> Core.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]-encodeNullaryConstant_typeArgsFromReturnType aliases t cx g =-    case (Strip.deannotateType t) of-      Core.TypeSet v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jst -> Eithers.bind (Utils.javaTypeToJavaReferenceType jst cx) (\rt -> Right [-        Syntax.TypeArgumentReference rt]))-      Core.TypeList v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jlt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jlt cx) (\rt -> Right [-        Syntax.TypeArgumentReference rt]))-      Core.TypeOptional v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jmt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jmt cx) (\rt -> Right [-        Syntax.TypeArgumentReference rt]))-      Core.TypeMap v0 -> Eithers.bind (encodeType aliases Sets.empty (Core.mapTypeKeys v0) cx g) (\jkt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jkt cx) (\rk -> Eithers.bind (encodeType aliases Sets.empty (Core.mapTypeValues v0) cx g) (\jvt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jvt cx) (\rv -> Right [-        Syntax.TypeArgumentReference rk,-        (Syntax.TypeArgumentReference rv)]))))-      _ -> Right []--encodeNullaryPrimitiveByName :: JavaEnvironment.JavaEnvironment -> Core.Type -> Core.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeNullaryPrimitiveByName env typ name cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-      in (Eithers.bind (encodeNullaryConstant_typeArgsFromReturnType aliases typ cx g) (\targs -> Logic.ifElse (Lists.isEmpty targs) (-        let header = Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (elementJavaIdentifier True False aliases name))-        in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-          Syntax.methodInvocationHeader = header,-          Syntax.methodInvocationArguments = []})))) (-        let fullName = Syntax.unIdentifier (elementJavaIdentifier True False aliases name)-            parts = Strings.splitOn "." fullName-            className = Syntax.Identifier (Strings.join "." (Optionals.withDefault [] (Lists.init parts)))-            methodName = Syntax.Identifier (Optionals.withDefault fullName (Lists.last parts))-        in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs className methodName targs []))))))--encodeTerm :: JavaEnvironment.JavaEnvironment -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeTerm env term cx g = encodeTermInternal env [] [] term cx g--encodeTermDefinition :: JavaEnvironment.JavaEnvironment -> Packaging.TermDefinition -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.InterfaceMemberDeclarationWithComments-encodeTermDefinition env tdef cx g =--      let name = Packaging.termDefinitionName tdef-          term0 = Packaging.termDefinitionBody tdef-      in (Eithers.bind (Annotations.getTermDescription cx g term0) (\mDoc ->-        let ts =-                Optionals.match (Packaging.termDefinitionSignature tdef) (Core.TypeScheme {-                  Core.typeSchemeVariables = [],-                  Core.typeSchemeBody = (Core.TypeVariable (Core.Name "hydra.core.Unit")),-                  Core.typeSchemeConstraints = Maps.empty}) (\sig -> Scoping.termSignatureToTypeScheme sig)-            term = Variables.unshadowVariables term0-        in (Eithers.bind (analyzeJavaFunction env term cx g) (\fs ->-          let schemeVars = Lists.filter (\v -> isSimpleName v) (Core.typeSchemeVariables ts)-              termVars = Typing.functionStructureTypeParams fs-              schemeTypeVars = collectTypeVars (Core.typeSchemeBody ts)-              usedSchemeVars = Lists.filter (\v -> Sets.member v schemeTypeVars) schemeVars-              tparams = Logic.ifElse (Lists.isEmpty usedSchemeVars) termVars usedSchemeVars-              params = Typing.functionStructureParams fs-              bindings = Typing.functionStructureBindings fs-              body = Typing.functionStructureBody fs-              doms = Typing.functionStructureDomains fs-              env2 = Typing.functionStructureEnvironment fs-              schemeType = Core.typeSchemeBody ts-              numParams = Lists.length params-              peelResult = peelDomainsAndCod numParams schemeType-              schemeDoms = Pairs.first peelResult-              cod = Pairs.second peelResult-              schemeVarSet = Sets.fromList tparams-          in (Eithers.bind (Logic.ifElse (Lists.isEmpty tparams) (Right Maps.empty) (buildSubstFromAnnotations schemeVarSet term cx g)) (\typeVarSubst ->-            let overgenSubst = detectAccumulatorUnification schemeDoms cod tparams-                overgenVarSubst =-                        Maps.fromList (Optionals.givens (Lists.map (\entry ->-                          let k = Pairs.first entry-                              v = Pairs.second entry-                          in case v of-                            Core.TypeVariable v0 -> Just (k, v0)-                            _ -> Nothing) (Maps.toList overgenSubst)))-                fixedCod = Logic.ifElse (Maps.isEmpty overgenSubst) cod (substituteTypeVarsWithTypes overgenSubst cod)-                fixedDoms =-                        Logic.ifElse (Maps.isEmpty overgenSubst) schemeDoms (Lists.map (\d -> substituteTypeVarsWithTypes overgenSubst d) schemeDoms)-                fixedTparams =-                        Logic.ifElse (Maps.isEmpty overgenSubst) tparams (Lists.filter (\v -> Logic.not (Maps.member v overgenSubst)) tparams)-                constraints = Core.typeSchemeConstraints ts-                jparams = Lists.map (\v -> Utils.javaTypeParameter (Formatting.capitalize (Core.unName v))) fixedTparams-                aliases2base = JavaEnvironment.javaEnvironmentAliases env2-                trustedVars = Sets.unions (Lists.map (\d -> collectTypeVars d) (Lists.concat2 fixedDoms [-                      fixedCod]))-                fixedSchemeVarSet = Sets.fromList fixedTparams-                aliases2 =-                        JavaEnvironment.Aliases {-                          JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases2base),-                          JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases2base),-                          JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases2base),-                          JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases2base),-                          JavaEnvironment.aliasesInScopeTypeParams = fixedSchemeVarSet,-                          JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases2base),-                          JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases2base),-                          JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases2base),-                          JavaEnvironment.aliasesLambdaVars = (Sets.union (JavaEnvironment.aliasesLambdaVars aliases2base) (Sets.fromList params)),-                          JavaEnvironment.aliasesTypeVarSubst = (Maps.union overgenVarSubst typeVarSubst),-                          JavaEnvironment.aliasesTrustedTypeVars = (Sets.intersection trustedVars fixedSchemeVarSet),-                          JavaEnvironment.aliasesMethodCodomain = (Just fixedCod),-                          JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases2base)}-                env2WithTypeParams =-                        JavaEnvironment.JavaEnvironment {-                          JavaEnvironment.javaEnvironmentAliases = aliases2,-                          JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env2)}-            in (Eithers.bind (bindingsToStatements env2WithTypeParams bindings cx g) (\bindResult ->-              let bindingStmts = Pairs.first bindResult-                  env3 = Pairs.second bindResult-              in (Eithers.bind (Logic.ifElse (Maps.isEmpty overgenSubst) (Right body) (applyOvergenSubstToTermAnnotations overgenSubst body cx g)) (\body_ ->-                let annotatedBody = propagateTypesInAppChain fixedCod fixedCod body_-                in (Eithers.bind (Eithers.mapList (\pair -> Eithers.bind (encodeType aliases2 Sets.empty (Pairs.first pair) cx g) (\jdom -> Right (Utils.javaTypeToJavaFormalParameter jdom (Pairs.second pair)))) (Lists.zip fixedDoms params)) (\jformalParams -> Eithers.bind (encodeType aliases2 Sets.empty fixedCod cx g) (\jcod ->-                  let result = Utils.javaTypeToJavaResult jcod-                      mods = [-                            Syntax.InterfaceMethodModifierStatic]-                      jname = Utils.sanitizeJavaName (Formatting.decapitalize (Names.localNameOf name))-                      isTCO = Logic.and (Logic.not (Lists.isEmpty params)) (Analysis.isSelfTailRecursive name body)-                  in (Eithers.bind (Logic.ifElse isTCO (-                    let tcoSuffix = "_tco"-                        snapshotNames = Lists.map (\p -> Core.Name (Strings.concat2 (Core.unName p) tcoSuffix)) params-                        tcoVarRenames = Maps.fromList (Lists.zip params snapshotNames)-                        snapshotDecls =-                                Lists.map (\pair -> Utils.finalVarDeclarationStatement (Utils.variableToJavaIdentifier (Pairs.second pair)) (Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier (Pairs.first pair)))) (Lists.zip params snapshotNames)-                        tcoBody =-                                Logic.ifElse (Lists.isEmpty bindings) annotatedBody (Core.TermLet (Core.Let {-                                  Core.letBindings = bindings,-                                  Core.letBody = annotatedBody}))-                    in (Eithers.bind (encodeTermTCO env2WithTypeParams name params tparams tcoVarRenames 0 tcoBody cx g) (\tcoStmts ->-                      let whileBodyStmts = Lists.concat2 snapshotDecls tcoStmts-                          whileBodyBlock =-                                  Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementBlock (Syntax.Block whileBodyStmts))-                          noCond = Nothing-                          whileStmt =-                                  Syntax.BlockStatementStatement (Syntax.StatementWhile (Syntax.WhileStatement {-                                    Syntax.whileStatementCond = noCond,-                                    Syntax.whileStatementBody = whileBodyBlock}))-                      in (Right [-                        whileStmt])))) (Eithers.bind (encodeTerm env3 annotatedBody cx g) (\jbody ->-                    let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))-                    in (Right (Lists.concat2 bindingStmts [-                      returnSt]))))) (\methodBody ->-                    let imdMember = Utils.interfaceMethodDeclaration mods jparams jname jformalParams result (Just methodBody)-                    in (Right (Optionals.match mDoc (noInterfaceComment imdMember) (\doc -> withInterfaceCommentString doc imdMember))))))))))))))))))--encodeTermInternal :: JavaEnvironment.JavaEnvironment -> [M.Map Core.Name Core.Term] -> [Syntax.Type] -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeTermInternal env anns tyapps term cx g0 =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          g = JavaEnvironment.javaEnvironmentGraph env-          encode = \t -> encodeTerm env t cx g-      in case term of-        Core.TermAnnotated v0 -> encodeTermInternal env (Lists.cons (Annotations.getAnnotationMap (Core.annotatedTermAnnotation v0)) anns) tyapps (Core.annotatedTermBody v0) cx g-        Core.TermApplication v0 -> encodeApplication env v0 cx g-        Core.TermEither v0 -> Eithers.bind (Logic.ifElse (Lists.isEmpty tyapps) (Right Nothing) (Eithers.bind (takeTypeArgs "either" 2 tyapps cx g) (\ta -> Right (Just ta)))) (\mtargs ->-          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mEitherType ->-            let branchTypes =-                    Optionals.bind mEitherType (\etyp -> case (Strip.deannotateType etyp) of-                      Core.TypeEither v1 -> Just (Core.eitherTypeLeft v1, (Core.eitherTypeRight v1))-                      _ -> Nothing)-                encodeWithType =-                        \branchType -> \t1 ->-                          let annotated = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ branchType)) t1-                          in (encodeTermInternal env anns [] annotated cx g)-                eitherCall =-                        \methodName -> \expr -> Optionals.match mtargs (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.Either") (Syntax.Identifier methodName) [-                          expr])) (\targs -> Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.Either") (Syntax.Identifier methodName) targs [-                          expr]))-            in (Eithers.either (\term1 -> Eithers.bind (Optionals.match branchTypes (encode term1) (\bt -> encodeWithType (Pairs.first bt) term1)) (\expr -> Right (eitherCall "left" expr))) (\term1 -> Eithers.bind (Optionals.match branchTypes (encode term1) (\bt -> encodeWithType (Pairs.second bt) term1)) (\expr -> Right (eitherCall "right" expr))) v0))))-        Core.TermLambda _ -> encodeFunctionFormTerm env anns term cx g-        Core.TermProject _ -> encodeFunctionFormTerm env anns term cx g-        Core.TermCases _ -> encodeFunctionFormTerm env anns term cx g-        Core.TermUnwrap _ -> encodeFunctionFormTerm env anns term cx g-        Core.TermLet v0 ->-          let bindings = Core.letBindings v0-              body = Core.letBody v0-          in (Logic.ifElse (Lists.isEmpty bindings) (encodeTermInternal env anns [] body cx g) (Eithers.bind (bindingsToStatements env bindings cx g) (\bindResult ->-            let bindingStmts = Pairs.first bindResult-                env2 = Pairs.second bindResult-            in (Eithers.bind (encodeTermInternal env2 anns [] body cx g) (\jbody ->-              let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))-                  block = Syntax.Block (Lists.concat2 bindingStmts [-                        returnSt])-                  nullaryLambda =-                          Syntax.ExpressionLambda (Syntax.LambdaExpression {-                            Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),-                            Syntax.lambdaExpressionBody = (Syntax.LambdaBodyBlock block)})-                  combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-                  g2 = JavaEnvironment.javaEnvironmentGraph env2-                  aliases2 = JavaEnvironment.javaEnvironmentAliases env2-              in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g2 body) (\t -> Right t)) (\letType -> Eithers.bind (encodeType aliases2 Sets.empty letType cx g) (\jLetType -> Eithers.bind (Utils.javaTypeToJavaReferenceType jLetType cx) (\rt ->-                let supplierRt =-                        Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Utils.javaClassType [-                          rt] JavaNames.javaUtilFunctionPackageName "Supplier"))-                    castExpr =-                            Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression supplierRt (Utils.javaExpressionToJavaUnaryExpression nullaryLambda))-                in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right (Utils.javaExpressionToJavaPrimary castExpr))) (Syntax.Identifier "get") [])))))))))))))-        Core.TermList v0 -> Logic.ifElse (Lists.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.ConsList") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "list" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.ConsList") (Syntax.Identifier "empty") targs []))))) (Eithers.bind (Eithers.mapList encode v0) (\jels -> Eithers.bind (collectionTypeArgs "list" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.ConsList") (Syntax.Identifier "of") targs jels)))))-        Core.TermLiteral v0 -> Right (encodeLiteral v0)-        Core.TermMap v0 -> Logic.ifElse (Maps.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.PersistentMap") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "map" 2 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.PersistentMap") (Syntax.Identifier "empty") targs []))))) (Eithers.bind (Eithers.mapList encode (Maps.keys v0)) (\jkeys -> Eithers.bind (Eithers.mapList encode (Maps.elems v0)) (\jvals ->-          let pairExprs =-                  Lists.map (\kv -> Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "java.util.Map") (Syntax.Identifier "entry") [-                    Pairs.first kv,-                    (Pairs.second kv)])) (Lists.zip jkeys jvals)-          in (Eithers.bind (collectionTypeArgs "map" 2 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.PersistentMap") (Syntax.Identifier "ofEntries") targs pairExprs)))))))-        Core.TermOptional v0 -> Optionals.match v0 (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.Optional") (Syntax.Identifier "none") []))) (Eithers.bind (takeTypeArgs "optional" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.Optional") (Syntax.Identifier "none") targs []))))) (\term1 -> Eithers.bind (encode term1) (\expr -> Eithers.bind (collectionTypeArgs "optional" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.Optional") (Syntax.Identifier "given") targs [-          expr])))))-        Core.TermPair v0 -> Eithers.bind (encode (Pairs.first v0)) (\jterm1 -> Eithers.bind (encode (Pairs.second v0)) (\jterm2 -> Eithers.bind (Logic.ifElse (Lists.isEmpty tyapps) (Right Nothing) (Eithers.bind (Eithers.mapList (\jt -> Utils.javaTypeToJavaReferenceType jt cx) tyapps) (\rts -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) rts)))))) (\mtargs -> Right (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "hydra.overlay.java.util.Pair") mtargs) [-          jterm1,-          jterm2] Nothing))))-        Core.TermRecord v0 ->-          let recName = Core.recordTypeName v0-              mRecordType = Eithers.either (\_ -> Nothing) (\t -> Just t) (Resolution.requireType cx g recName)-              strippedRecTyp = Optionals.map (\recTyp -> stripForalls (Strip.deannotateType recTyp)) mRecordType-              mFieldTypeMap =-                      Optionals.bind strippedRecTyp (\bodyTyp -> case bodyTyp of-                        Core.TypeRecord v1 -> Just (Maps.fromList (Lists.map (\ft -> (Core.fieldTypeName ft, (Core.fieldTypeType ft))) v1))-                        _ -> Nothing)-              combinedAnnsRec = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnnsRec)) (\mAnnotType ->-            let mTypeSubst =-                    Optionals.bind mAnnotType (\annTyp -> Optionals.bind mRecordType (\recTyp ->-                      let args = extractTypeApplicationArgs (Strip.deannotateType annTyp)-                          params = collectForallParams (Strip.deannotateType recTyp)-                      in (Logic.ifElse (Logic.or (Lists.isEmpty args) (Logic.not (Equality.equal (Lists.length args) (Lists.length params)))) Nothing (Just (Maps.fromList (Lists.zip params args))))))-                encodeField =-                        \fld -> Optionals.match mFieldTypeMap (encode (Core.fieldTerm fld)) (\ftmap ->-                          let mftyp = Maps.lookup (Core.fieldName fld) ftmap-                          in (Optionals.match mftyp (encode (Core.fieldTerm fld)) (\ftyp ->-                            let resolvedType = Optionals.match mTypeSubst ftyp (\subst -> applySubstFull subst ftyp)-                                annotatedFieldTerm =-                                        Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ resolvedType)) (Core.fieldTerm fld)-                            in (encodeTermInternal env anns [] annotatedFieldTerm cx g))))-            in (Eithers.bind (Eithers.mapList encodeField (Core.recordFields v0)) (\fieldExprs ->-              let consId = Utils.nameToJavaName aliases recName-              in (Eithers.bind (Logic.ifElse (Logic.not (Lists.isEmpty tyapps)) (Eithers.bind (Eithers.mapList (\jt -> Utils.javaTypeToJavaReferenceType jt cx) tyapps) (\rts -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) rts))))) (-                let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-                in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Optionals.match mtyp (Right Nothing) (\annTyp ->-                  let typeArgs = extractTypeApplicationArgs (Strip.deannotateType annTyp)-                  in (Logic.ifElse (Lists.isEmpty typeArgs) (Right Nothing) (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Utils.javaTypeToJavaReferenceType jt cx)) typeArgs) (\jTypeArgs -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) jTypeArgs))))))))))) (\mtargs -> Right (Utils.javaConstructorCall (Utils.javaConstructorName consId mtargs) fieldExprs Nothing)))))))-        Core.TermSet v0 -> Logic.ifElse (Sets.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.overlay.java.util.PersistentSet") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "set" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.PersistentSet") (Syntax.Identifier "empty") targs []))))) (-          let slist = Sets.toList v0-          in (Eithers.bind (Eithers.mapList encode slist) (\jels -> Eithers.bind (collectionTypeArgs "set" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.PersistentSet") (Syntax.Identifier "of") targs jels))))))-        Core.TermTypeLambda v0 -> withTypeLambda env v0 (\env2 ->-          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp ->-            let annotatedBody =-                    Optionals.match mtyp (Core.typeLambdaBody v0) (\t -> case t of-                      Core.TypeForall v1 -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ (Core.forallTypeBody v1))) (Core.typeLambdaBody v0)-                      _ -> Core.typeLambdaBody v0)-            in (encodeTerm env2 annotatedBody cx g))))-        Core.TermInject v0 ->-          let injTypeName = Core.injectionTypeName v0-              injField = Core.injectionField v0-              injFieldName = Core.fieldName injField-              injFieldTerm = Core.fieldTerm injField-              typeId = Syntax.unIdentifier (Utils.nameToJavaName aliases injTypeName)-              consId =-                      Syntax.Identifier (Strings.concat [-                        typeId,-                        ".",-                        (Utils.sanitizeJavaName (Formatting.capitalize (Core.unName injFieldName)))])-          in (Eithers.bind (isFieldUnitType injTypeName injFieldName cx g) (\fieldIsUnit -> Eithers.bind (Logic.ifElse (Logic.or (Predicates.isUnitTerm (Strip.deannotateTerm injFieldTerm)) fieldIsUnit) (Right []) (Eithers.bind (encode injFieldTerm) (\ex -> Right [-            ex]))) (\args -> Right (Utils.javaConstructorCall (Utils.javaConstructorName consId Nothing) args Nothing))))-        Core.TermVariable v0 -> Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (encodeVariable env v0 cx g) (\_ ->-          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g term) (\t -> Right t)) (\typ -> case (Strip.deannotateType typ) of-            Core.TypeFunction v1 -> encodeFunctionPrimitiveByName env (Core.functionTypeDomain v1) (Core.functionTypeCodomain v1) v0 cx g-            _ -> encodeNullaryPrimitiveByName env typ v0 cx g))))-        Core.TermUnit -> Right (Utils.javaLiteralToJavaExpression Syntax.LiteralNull)-        Core.TermWrap v0 -> Eithers.bind (encode (Core.wrappedTermBody v0)) (\jarg -> Right (Utils.javaConstructorCall (Utils.javaConstructorName (Utils.nameToJavaName aliases (Core.wrappedTermTypeName v0)) Nothing) [-          jarg] Nothing))-        Core.TermTypeApplication v0 ->-          let atyp = Core.typeApplicationTermType v0-              body = Core.typeApplicationTermBody v0-          in (Eithers.bind (encodeType aliases Sets.empty atyp cx g) (\jatyp ->-            let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns-            in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Eithers.bind (Optionals.match mtyp (Checking.typeOfTerm cx g term) (\t -> Right t)) (\typ ->-              let collected0 = collectTypeApps0 body [-                    atyp]-                  innermostBody0 = Pairs.first collected0-                  allTypeArgs0 = Pairs.second collected0-              in (Eithers.bind (correctCastType innermostBody0 allTypeArgs0 typ cx g) (\correctedTyp ->-                let collected = collectTypeApps body [-                      atyp]-                    innermostBody = Pairs.first collected-                    allTypeArgs = Pairs.second collected-                in case innermostBody of-                  Core.TermVariable v1 -> Eithers.bind (classifyDataReference v1 cx g) (\cls -> typeAppNullaryOrHoisted env aliases anns tyapps jatyp body correctedTyp v1 cls allTypeArgs cx g)-                  Core.TermEither v1 -> Logic.ifElse (Equality.equal (Lists.length allTypeArgs) 2) (-                    let eitherBranchTypes =-                            (Optionals.withDefault correctedTyp (Lists.at 0 allTypeArgs), (Optionals.withDefault correctedTyp (Lists.at 1 allTypeArgs)))-                    in (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Utils.javaTypeToJavaReferenceType jt cx)) allTypeArgs) (\jTypeArgs ->-                      let eitherTargs = Lists.map (\rt -> Syntax.TypeArgumentReference rt) jTypeArgs-                          encodeEitherBranch =-                                  \branchType -> \t1 ->-                                    let annotated = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ branchType)) t1-                                    in (encodeTermInternal env anns [] annotated cx g)-                      in (Eithers.either (\term1 -> Eithers.bind (encodeEitherBranch (Pairs.first eitherBranchTypes) term1) (\expr -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.Either") (Syntax.Identifier "left") eitherTargs [-                        expr])))) (\term1 -> Eithers.bind (encodeEitherBranch (Pairs.second eitherBranchTypes) term1) (\expr -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.overlay.java.util.Either") (Syntax.Identifier "right") eitherTargs [-                        expr])))) v1)))) (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g)-                  _ -> typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g)))))))-        _ -> Right (encodeLiteral (Core.LiteralString "Unimplemented term variant"))--encodeTermTCO :: JavaEnvironment.JavaEnvironment -> Core.Name -> [Core.Name] -> [Core.Name] -> M.Map Core.Name Core.Name -> Int -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error [Syntax.BlockStatement]-encodeTermTCO env0 funcName paramNames tparams tcoVarRenames tcoDepth term cx g =--      let aliases0 = JavaEnvironment.javaEnvironmentAliases env0-          env =-                  JavaEnvironment.JavaEnvironment {-                    JavaEnvironment.javaEnvironmentAliases = JavaEnvironment.Aliases {-                      JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases0),-                      JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases0),-                      JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases0),-                      JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases0),-                      JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases0),-                      JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases0),-                      JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases0),-                      JavaEnvironment.aliasesVarRenames = (Maps.union tcoVarRenames (JavaEnvironment.aliasesVarRenames aliases0)),-                      JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases0),-                      JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases0),-                      JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases0),-                      JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases0),-                      JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases0)},-                    JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env0)}-          stripped = Strip.deannotateAndDetypeTerm term-          gathered = Analysis.gatherApplications stripped-          gatherArgs = Pairs.first gathered-          gatherFun = Pairs.second gathered-          strippedFun = Strip.deannotateAndDetypeTerm gatherFun-          isSelfCall =-                  case strippedFun of-                    Core.TermVariable v0 -> Equality.equal v0 funcName-                    _ -> False-      in (Logic.ifElse (Logic.and isSelfCall (Equality.equal (Lists.length gatherArgs) (Lists.length paramNames))) (-        let changePairs =-                Lists.filter (\pair -> Logic.not (case (Strip.deannotateAndDetypeTerm (Pairs.second pair)) of-                  Core.TermVariable v0 -> Equality.equal v0 (Pairs.first pair)-                  _ -> False)) (Lists.zip paramNames gatherArgs)-            changedParams = Lists.map Pairs.first changePairs-        in (Eithers.bind (Eithers.mapList (\pair -> encodeTerm env (Pairs.second pair) cx g) changePairs) (\jChangedArgs ->-          let assignments =-                  Lists.map (\pair ->-                    let paramName = Pairs.first pair-                        jArg = Pairs.second pair-                    in (Syntax.BlockStatementStatement (Utils.javaAssignmentStatement (Syntax.LeftHandSideExpressionName (Utils.javaIdentifierToJavaExpressionName (Utils.variableToJavaIdentifier paramName))) jArg))) (Lists.zip changedParams jChangedArgs)-              continueStmt =-                      Syntax.BlockStatementStatement (Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementContinue (Syntax.ContinueStatement Nothing)))-          in (Right (Lists.concat2 assignments [-            continueStmt]))))) (case stripped of-        Core.TermLet v0 ->-          let letBindings = Core.letBindings v0-              letBody = Core.letBody v0-          in (Eithers.bind (bindingsToStatements env letBindings cx g) (\bindResult ->-            let letStmts = Pairs.first bindResult-                envAfterLet = Pairs.second bindResult-            in (Eithers.bind (encodeTermTCO envAfterLet funcName paramNames tparams tcoVarRenames tcoDepth letBody cx g) (\tcoBodyStmts -> Right (Lists.concat2 letStmts tcoBodyStmts)))))-        _ ->-          let gathered2 = Analysis.gatherApplications term-              args2 = Pairs.first gathered2-              body2 = Pairs.second gathered2-          in (Logic.ifElse (Equality.equal (Lists.length args2) 1) (-            let arg = Optionals.withDefault Core.TermUnit (Lists.head args2)-            in case (Strip.deannotateAndDetypeTerm body2) of-              Core.TermCases v0 ->-                let aliases = JavaEnvironment.javaEnvironmentAliases env-                    tname = Core.caseStatementTypeName v0-                    dflt = Core.caseStatementDefault v0-                    cases_ = Core.caseStatementCases v0-                    tnameIsGeneric =-                            Optionals.match (Maps.lookup tname (Graph.graphSchemaTypes g)) False (\ts -> Logic.not (Lists.isEmpty (Core.typeSchemeVariables ts)))-                    domArgs =-                            Logic.ifElse tnameIsGeneric (Lists.map (\tp -> Utils.typeParameterToTypeArgument (Utils.javaTypeParameter (Formatting.capitalize (Core.unName tp)))) tparams) []-                in (Eithers.bind (encodeTerm env arg cx g) (\jArgRaw ->-                  let depthSuffix = Logic.ifElse (Equality.equal tcoDepth 0) "" (Literals.printInt32 tcoDepth)-                      matchVarId =-                              Utils.javaIdentifier (Strings.concat [-                                "_tco_match_",-                                (Formatting.decapitalize (Names.localNameOf tname)),-                                depthSuffix])-                      matchDecl = Utils.varDeclarationStatement matchVarId jArgRaw-                      jArg = Utils.javaIdentifierToJavaExpression matchVarId-                  in (Eithers.bind (Eithers.mapList (\field ->-                    let fieldName = Core.caseAlternativeName field-                        variantRefType =-                                Utils.nameToJavaReferenceType aliases True domArgs tname (Just (Formatting.capitalize (Core.unName fieldName)))-                        variantRawType = Utils.nameToJavaReferenceType aliases True [] tname (Just (Formatting.capitalize (Core.unName fieldName)))-                    in case (Strip.deannotateTerm (Core.caseAlternativeHandler field)) of-                      Core.TermLambda v1 -> withLambda env v1 (\env2 ->-                        let lambdaParam = Core.lambdaParameter v1-                            branchBody = Core.lambdaBody v1-                            env3 = insertBranchVar lambdaParam env2-                            varId = Utils.variableToJavaIdentifier lambdaParam-                            castExpr =-                                    Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression variantRefType (Utils.javaExpressionToJavaUnaryExpression jArg))-                            localDecl = Utils.varDeclarationStatement varId castExpr-                            isBranchTailCall = Analysis.isTailRecursiveInTailPosition funcName branchBody-                        in (Eithers.bind (Logic.ifElse isBranchTailCall (encodeTermTCO env3 funcName paramNames tparams tcoVarRenames (Math.add tcoDepth 1) branchBody cx g) (Eithers.bind (analyzeJavaFunction env3 branchBody cx g) (\fs ->-                          let bindings = Typing.functionStructureBindings fs-                              innerBody = Typing.functionStructureBody fs-                              env4 = Typing.functionStructureEnvironment fs-                          in (Eithers.bind (bindingsToStatements env4 bindings cx g) (\bindResult ->-                            let bindingStmts = Pairs.first bindResult-                                env5 = Pairs.second bindResult-                            in (Eithers.bind (encodeTerm env5 innerBody cx g) (\jret ->-                              let returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))-                              in (Right (Lists.concat2 bindingStmts [-                                returnStmt]))))))))) (\bodyStmts ->-                          let relExpr =-                                  Utils.javaInstanceOf (Utils.javaUnaryExpressionToJavaRelationalExpression (Utils.javaExpressionToJavaUnaryExpression jArg)) variantRawType-                              condExpr = Utils.javaRelationalExpressionToJavaExpression relExpr-                              blockStmts = Lists.cons localDecl bodyStmts-                              ifBody = Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementBlock (Syntax.Block blockStmts))-                          in (Right (Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {-                            Syntax.ifThenStatementExpression = condExpr,-                            Syntax.ifThenStatementStatement = ifBody})))))))-                      _ -> Left (Errors.ErrorOther (Errors.OtherError "TCO: case branch is not a lambda"))) cases_) (\ifBlocks -> Eithers.bind (Optionals.match dflt (Right [-                    Syntax.BlockStatementStatement (Utils.javaThrowIllegalStateException [-                      Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions [-                        Utils.javaStringMultiplicativeExpression "Non-exhaustive patterns when matching"])])]) (\d -> Eithers.bind (encodeTerm env d cx g) (\dExpr -> Right [-                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just dExpr))]))) (\defaultStmt -> Right (Lists.concat [-                    [-                      matchDecl],-                    ifBlocks,-                    defaultStmt]))))))-              _ -> Eithers.bind (encodeTerm env term cx g) (\expr -> Right [-                Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just expr))])) (Eithers.bind (encodeTerm env term cx g) (\expr -> Right [-            Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just expr))])))))--encodeType :: JavaEnvironment.Aliases -> S.Set Core.Name -> Core.Type -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Type-encodeType aliases boundVars t cx g =--      let inScopeTypeParams = JavaEnvironment.aliasesInScopeTypeParams aliases-          typeVarSubst = JavaEnvironment.aliasesTypeVarSubst aliases-      in case (Strip.deannotateType t) of-        Core.TypeApplication v0 -> Eithers.bind (encodeType aliases boundVars (Core.applicationTypeFunction v0) cx g) (\jlhs -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.applicationTypeArgument v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jrhs -> Utils.addJavaTypeParameter jrhs jlhs cx))-        Core.TypeFunction v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.functionTypeDomain v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jdom -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.functionTypeCodomain v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jcod -> Right (Utils.javaRefType [-          jdom,-          jcod] JavaNames.javaUtilFunctionPackageName "Function")))-        Core.TypeForall v0 -> Eithers.bind (encodeType aliases (Sets.insert (Core.forallTypeParameter v0) boundVars) (Core.forallTypeBody v0) cx g) (\jbody -> Utils.addJavaTypeParameter (Utils.javaTypeVariable (Core.unName (Core.forallTypeParameter v0))) jbody cx)-        Core.TypeList v0 -> Eithers.bind (encodeType aliases boundVars v0 cx g) (\jet -> Eithers.bind (Eithers.bind (Right jet) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\rt -> Right (Utils.javaRefType [-          rt] JavaNames.javaUtilPackageName "List")))-        Core.TypeEffect v0 -> encodeType aliases boundVars v0 cx g-        Core.TypeLiteral v0 -> encodeLiteralType v0 cx g-        Core.TypeEither v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.eitherTypeLeft v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jlt -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.eitherTypeRight v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jrt -> Right (Utils.javaRefType [-          jlt,-          jrt] JavaNames.hydraUtilPackageName "Either")))-        Core.TypeMap v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.mapTypeKeys v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jkt -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.mapTypeValues v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jvt -> Right (Utils.javaRefType [-          jkt,-          jvt] JavaNames.javaUtilPackageName "Map")))-        Core.TypePair v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.pairTypeFirst v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jfirst -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Core.pairTypeSecond v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jsecond -> Right (Utils.javaRefType [-          jfirst,-          jsecond] JavaNames.hydraUtilPackageName "Pair")))-        Core.TypeUnit -> Right (Utils.javaRefType [] JavaNames.javaLangPackageName "Void")-        Core.TypeRecord v0 -> Logic.ifElse (Lists.isEmpty v0) (Right (Utils.javaRefType [] JavaNames.javaLangPackageName "Void")) (Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous record type")))-        Core.TypeOptional v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars v0 cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jot -> Right (Utils.javaRefType [-          jot] JavaNames.hydraUtilPackageName "Optional"))-        Core.TypeSet v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars v0 cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jst -> Right (Utils.javaRefType [-          jst] JavaNames.javaUtilPackageName "Set"))-        Core.TypeUnion _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous union type"))-        Core.TypeVariable v0 ->-          let name = Optionals.withDefault v0 (Maps.lookup v0 typeVarSubst)-          in (Eithers.bind (encodeType_resolveIfTypedef aliases boundVars inScopeTypeParams name cx g) (\resolved -> Optionals.match resolved (Right (Logic.ifElse (Logic.or (Sets.member name boundVars) (Sets.member name inScopeTypeParams)) (Syntax.TypeReference (Utils.javaTypeVariable (Core.unName name))) (Logic.ifElse (isLambdaBoundVariable name) (Syntax.TypeReference (Utils.javaTypeVariable (Core.unName name))) (Logic.ifElse (isUnresolvedInferenceVar name) (Syntax.TypeReference (Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Utils.javaClassType [] JavaNames.javaLangPackageName "Object")))) (Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True [] name Nothing)))))) (\resolvedType -> encodeType aliases boundVars resolvedType cx g)))-        Core.TypeWrap _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous wrap type"))-        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "can't encode unsupported type in Java: " (PrintCore.type_ t))))--encodeTypeDefinition :: Syntax.PackageDeclaration -> JavaEnvironment.Aliases -> Packaging.TypeDefinition -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (Core.Name, Syntax.CompilationUnit)-encodeTypeDefinition pkg aliases tdef cx g =--      let name = Packaging.typeDefinitionName tdef-          typ = Core.typeSchemeBody (Packaging.typeDefinitionBody tdef)-          serializable = isSerializableJavaType typ-          imports =-                  Logic.ifElse serializable [-                    Syntax.ImportDeclarationSingleType (Syntax.SingleTypeImportDeclaration (Utils.javaTypeName (Syntax.Identifier "java.io.Serializable")))] []-      in (Eithers.bind (toClassDecl False serializable aliases [] name typ cx g) (\decl -> Eithers.bind (Annotations.getTypeDescription cx g typ) (\comment ->-        let tdecl =-                Syntax.TopLevelClassOrInterfaceDeclarationWithComments {-                  Syntax.topLevelClassOrInterfaceDeclarationWithCommentsValue = (Syntax.TopLevelClassOrInterfaceDeclarationClass decl),-                  Syntax.topLevelClassOrInterfaceDeclarationWithCommentsComments = comment}-        in (Right (-          name,-          (Syntax.CompilationUnitOrdinary (Syntax.OrdinaryCompilationUnit {-            Syntax.ordinaryCompilationUnitPackage = (Just pkg),-            Syntax.ordinaryCompilationUnitImports = imports,-            Syntax.ordinaryCompilationUnitTypes = [-              tdecl]})))))))--encodeType_resolveIfTypedef :: t0 -> S.Set Core.Name -> S.Set Core.Name -> Core.Name -> t1 -> Graph.Graph -> Either t2 (Maybe Core.Type)-encodeType_resolveIfTypedef aliases boundVars inScopeTypeParams name cx g =-    Logic.ifElse (Logic.or (Sets.member name boundVars) (Sets.member name inScopeTypeParams)) (Right Nothing) (Logic.ifElse (isLambdaBoundVariable name) (Right Nothing) (-      let schemaTypes = Graph.graphSchemaTypes g-      in (Optionals.match (Maps.lookup name schemaTypes) (Right Nothing) (\ts -> Logic.ifElse (Logic.not (Lists.isEmpty (Core.typeSchemeVariables ts))) (Right Nothing) (case (Strip.deannotateType (Core.typeSchemeBody ts)) of-        Core.TypeRecord _ -> Right Nothing-        Core.TypeUnion _ -> Right Nothing-        Core.TypeWrap _ -> Right Nothing-        _ -> Right (Just (Core.typeSchemeBody ts)))))))--encodeVariable :: JavaEnvironment.JavaEnvironment -> Core.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeVariable env name cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          resolvedName = Utils.lookupJavaVarName aliases name-          jid = Utils.javaIdentifier (Core.unName resolvedName)-      in (Logic.ifElse (Sets.member name (JavaEnvironment.aliasesBranchVars aliases)) (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {-        Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary (Utils.javaIdentifierToJavaExpression jid))),-        Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)}))) (Logic.ifElse (Logic.and (Equality.equal name (Core.Name (Strings.concat [-        JavaNames.instanceName,-        "_",-        JavaNames.valueFieldName]))) (isRecursiveVariable aliases name)) (-        let instanceExpr = Utils.javaIdentifierToJavaExpression (Utils.javaIdentifier JavaNames.instanceName)-        in (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {-          Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary instanceExpr)),-          Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)})))) (Logic.ifElse (Logic.and (isRecursiveVariable aliases name) (Logic.not (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)))) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {-        Syntax.expressionNameQualifier = Nothing,-        Syntax.expressionNameIdentifier = jid}))) (Syntax.Identifier JavaNames.getMethodName) []))) (Logic.ifElse (Logic.and (Sets.member name (JavaEnvironment.aliasesThunkedVars aliases)) (Logic.not (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)))) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {-        Syntax.expressionNameQualifier = Nothing,-        Syntax.expressionNameIdentifier = jid}))) (Syntax.Identifier JavaNames.getMethodName) []))) (Logic.ifElse (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)) (-        let actualName = findMatchingLambdaVar name (JavaEnvironment.aliasesLambdaVars aliases)-            resolvedActual = Utils.lookupJavaVarName aliases actualName-        in (Right (Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier resolvedActual)))) (Logic.ifElse (Sets.member name (JavaEnvironment.aliasesInScopeJavaVars aliases)) (Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases resolvedName))) (Eithers.bind (classifyDataReference name cx g) (\cls -> case cls of-        JavaEnvironment.JavaSymbolClassHoistedLambda v0 -> encodeVariable_hoistedLambdaCase aliases name v0 cx g-        JavaEnvironment.JavaSymbolClassLocalVariable -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases resolvedName))-        JavaEnvironment.JavaSymbolClassConstant -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases name))-        JavaEnvironment.JavaSymbolClassNullaryFunction -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (elementJavaIdentifier False False aliases name) []))-        JavaEnvironment.JavaSymbolClassUnaryFunction -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False True aliases name))))))))))--encodeVariable_buildCurried :: [Core.Name] -> Syntax.Expression -> Syntax.Expression-encodeVariable_buildCurried params inner =-    Optionals.withDefault inner (Optionals.map (\p -> Utils.javaLambda (Pairs.first p) (encodeVariable_buildCurried (Pairs.second p) inner)) (Lists.uncons params))--encodeVariable_hoistedLambdaCase :: JavaEnvironment.Aliases -> Core.Name -> Int -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression-encodeVariable_hoistedLambdaCase aliases name arity cx g =--      let paramNames = Lists.map (\i -> Core.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 arity)-          paramExprs = Lists.map (\pn -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier pn)) paramNames-          call =-                  Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (elementJavaIdentifier False False aliases name) paramExprs)-          lam = encodeVariable_buildCurried paramNames call-      in (Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right lam) (\el -> Optionals.match (Core.bindingTypeScheme el) (Right lam) (\ts ->-        let typ = Core.typeSchemeBody ts-        in (Eithers.bind (encodeType aliases Sets.empty typ cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression lam))))))))))--eqClause :: String -> Core.FieldType -> Syntax.InclusiveOrExpression-eqClause tmpName ft =--      let fname = Core.unName (Core.fieldTypeName ft)-          ftype = Core.fieldTypeType ft-      in (Logic.ifElse (isBinaryType ftype) (arraysEqualsClause tmpName fname) (Logic.ifElse (isBigIntegerType ftype) (compareToZeroClause tmpName fname) (equalsClause tmpName fname)))--equalsClause :: String -> String -> Syntax.InclusiveOrExpression-equalsClause tmpName fname =--      let thisArg =-              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))-          otherArg =-                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))-          header =-                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                    Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Objects"))),-                    Syntax.methodInvocation_ComplexTypeArguments = [],-                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.equalsMethodName)})-      in (Utils.javaPostfixExpressionToJavaInclusiveOrExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {-        Syntax.methodInvocationHeader = header,-        Syntax.methodInvocationArguments = [-          thisArg,-          otherArg]})))--extractArgType :: t0 -> Core.Type -> Core.Type-extractArgType _lhs typ =-    case typ of-      Core.TypeApplication v0 -> case (Core.applicationTypeFunction v0) of-        Core.TypeApplication _ -> Core.applicationTypeArgument v0-        _ -> typ-      _ -> typ--extractDirectReturn :: S.Set Core.Name -> Core.Type -> [(Core.Name, Core.Name)]-extractDirectReturn tparamSet t = extractDirectReturn_go tparamSet t--extractDirectReturn_go :: S.Set Core.Name -> Core.Type -> [(Core.Name, Core.Name)]-extractDirectReturn_go tparamSet t =-    case (Strip.deannotateType t) of-      Core.TypeFunction v0 ->-        let dom = Strip.deannotateType (Core.functionTypeDomain v0)-            cod = Core.functionTypeCodomain v0-        in case dom of-          Core.TypeVariable v1 -> Logic.ifElse (Sets.member v1 tparamSet) (case (Strip.deannotateType cod) of-            Core.TypeFunction v2 ->-              let midArg = Strip.deannotateType (Core.functionTypeDomain v2)-                  retPart = Strip.deannotateType (Core.functionTypeCodomain v2)-              in case midArg of-                Core.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [] (case retPart of-                  Core.TypeVariable v4 -> Logic.ifElse (Sets.member v4 tparamSet) [-                    (v1, v4)] []-                  _ -> [])-                _ -> case retPart of-                  Core.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [-                    (v1, v3)] []-                  _ -> []-            _ -> []) (extractDirectReturn_go tparamSet cod)-          _ -> extractDirectReturn_go tparamSet cod-      _ -> []--extractInOutPair :: Core.Type -> [(Core.Name, Core.Name)]-extractInOutPair t =-    case (Strip.deannotateType t) of-      Core.TypeFunction v0 -> case (Strip.deannotateType (Core.functionTypeDomain v0)) of-        Core.TypeVariable v1 ->-          let retType = unwrapReturnType (Core.functionTypeCodomain v0)-          in case (Strip.deannotateType retType) of-            Core.TypePair v2 -> case (Strip.deannotateType (Core.pairTypeFirst v2)) of-              Core.TypeVariable v3 -> [-                (v1, v3)]-              _ -> []-            _ -> []-        _ -> []-      _ -> []--extractTypeApplicationArgs :: Core.Type -> [Core.Type]-extractTypeApplicationArgs typ = Lists.reverse (extractTypeApplicationArgs_go typ)--extractTypeApplicationArgs_go :: Core.Type -> [Core.Type]-extractTypeApplicationArgs_go t =-    case t of-      Core.TypeApplication v0 -> Lists.cons (Core.applicationTypeArgument v0) (extractTypeApplicationArgs_go (Core.applicationTypeFunction v0))-      _ -> []--fieldToStringPart :: Core.FieldType -> [Syntax.MultiplicativeExpression]-fieldToStringPart f =--      let fname = Core.unName (Core.fieldTypeName f)-          nameLiteral = Utils.javaStringMultiplicativeExpression (Strings.concat2 fname "=")-          valueExpr =-                  Syntax.MultiplicativeExpressionUnary (Utils.javaExpressionToJavaUnaryExpression (Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))))-      in [-        Utils.javaStringMultiplicativeExpression ", ",-        nameLiteral,-        valueExpr]--fieldTypeToFormalParam :: JavaEnvironment.Aliases -> Core.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.FormalParameter-fieldTypeToFormalParam aliases ft cx g =-    Eithers.bind (encodeType aliases Sets.empty (Core.fieldTypeType ft) cx g) (\jt -> Right (Utils.javaTypeToJavaFormalParameter jt (Core.fieldTypeName ft)))--filterByFlags :: [t0] -> [Bool] -> [t0]-filterByFlags xs flags = Lists.map (\p -> Pairs.first p) (Lists.filter (\p -> Pairs.second p) (Lists.zip xs flags))--filterPhantomTypeArgs :: Core.Name -> [Core.Type] -> t0 -> Graph.Graph -> Either t1 [Core.Type]-filterPhantomTypeArgs calleeName allTypeArgs cx g =-    Eithers.bind (Right (Lexical.lookupBinding g calleeName)) (\mel -> Optionals.match mel (Right allTypeArgs) (\el -> Optionals.match (Core.bindingTypeScheme el) (Right allTypeArgs) (\ts ->-      let schemeVars = Lists.filter (\v -> isSimpleName v) (Core.typeSchemeVariables ts)-          schemeTypeVars = collectTypeVars (Core.typeSchemeBody ts)-          schemeType = Core.typeSchemeBody ts-          nParams = countFunctionParams schemeType-          peeled = peelDomainTypes nParams schemeType-          calleeDoms = Pairs.first peeled-          calleeCod = Pairs.second peeled-          overgenSubst = detectAccumulatorUnification calleeDoms calleeCod schemeVars-          keepFlags = Lists.map (\v -> Logic.and (Sets.member v schemeTypeVars) (Logic.not (Maps.member v overgenSubst))) schemeVars-      in (Logic.ifElse (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length allTypeArgs))) (Right allTypeArgs) (Right (filterPhantomTypeArgs_filterAndApply allTypeArgs keepFlags overgenSubst))))))--filterPhantomTypeArgs_filterAndApply :: [Core.Type] -> [Bool] -> M.Map Core.Name Core.Type -> [Core.Type]-filterPhantomTypeArgs_filterAndApply allTypeArgs keepFlags overgenSubst =--      let filtered = Lists.map (\p -> Pairs.first p) (Lists.filter (\p -> Pairs.second p) (Lists.zip allTypeArgs keepFlags))-      in (Logic.ifElse (Logic.not (Maps.isEmpty overgenSubst)) (Lists.map (\t -> substituteTypeVarsWithTypes overgenSubst t) filtered) filtered)--findMatchingLambdaVar :: Core.Name -> S.Set Core.Name -> Core.Name-findMatchingLambdaVar name lambdaVars =-    Logic.ifElse (Sets.member name lambdaVars) name (Logic.ifElse (isLambdaBoundIn_isQualified name) (Optionals.withDefault name (Lists.find (\lv -> Logic.and (isLambdaBoundIn_isQualified lv) (Equality.equal (Names.localNameOf lv) (Names.localNameOf name))) (Sets.toList lambdaVars))) (Logic.ifElse (Sets.member (Core.Name (Names.localNameOf name)) lambdaVars) (Core.Name (Names.localNameOf name)) name))--findPairFirst :: Core.Type -> Maybe Core.Name-findPairFirst t =-    case (Strip.deannotateType t) of-      Core.TypePair v0 -> case (Strip.deannotateType (Core.pairTypeFirst v0)) of-        Core.TypeVariable v1 -> Just v1-        _ -> Nothing-      _ -> Nothing--findSelfRefVar :: (Eq t0, Ord t0) => (M.Map t0 [t0] -> Maybe t0)-findSelfRefVar grouped =--      let selfRefs = Lists.filter (\entry -> Lists.member (Pairs.first entry) (Pairs.second entry)) (Maps.toList grouped)-      in (Optionals.map (\entry -> Pairs.first entry) (Lists.head selfRefs))--first20Primes :: [Integer]-first20Primes =-    [-      2,-      3,-      5,-      7,-      11,-      13,-      17,-      19,-      23,-      29,-      31,-      37,-      41,-      43,-      47,-      53,-      59,-      61,-      67,-      71]--flattenApps :: Core.Term -> [Core.Term] -> ([Core.Term], Core.Term)-flattenApps t acc =-    case (Strip.deannotateTerm t) of-      Core.TermApplication v0 -> flattenApps (Core.applicationFunction v0) (Lists.cons (Core.applicationArgument v0) acc)-      _ -> (acc, t)--flattenBindings :: [Core.Binding] -> [Core.Binding]-flattenBindings bindings =-    Lists.bind bindings (\b -> case (Strip.deannotateTerm (Core.bindingTerm b)) of-      Core.TermLet v0 -> Lists.concat2 (flattenBindings (Core.letBindings v0)) [-        Core.Binding {-          Core.bindingName = (Core.bindingName b),-          Core.bindingTerm = (Core.letBody v0),-          Core.bindingTypeScheme = (Core.bindingTypeScheme b)}]-      _ -> [-        b])--freshJavaName :: Core.Name -> S.Set Core.Name -> Core.Name-freshJavaName base avoid = freshJavaName_go base avoid 2--freshJavaName_go :: Core.Name -> S.Set Core.Name -> Int -> Core.Name-freshJavaName_go base avoid i =--      let candidate = Core.Name (Strings.concat2 (Core.unName base) (Literals.printInt32 i))-      in (Logic.ifElse (Sets.member candidate avoid) (freshJavaName_go base avoid (Math.add i 1)) candidate)--functionCall :: JavaEnvironment.JavaEnvironment -> Bool -> Core.Name -> [Core.Term] -> [Core.Type] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-functionCall env isPrim name args typeApps cx g =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-          isLambdaBound = isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)-      in (Eithers.bind (Eithers.mapList (\arg -> encodeTerm env arg cx g) args) (\jargs0 ->-        let wrapResult = wrapLazyArguments g name jargs0-            jargs = Pairs.first wrapResult-            mMethodOverride = Pairs.second wrapResult-        in (Logic.ifElse (Logic.or (isLocalVariable name) isLambdaBound) (Eithers.bind (encodeVariable env name cx g) (\baseExpr -> Right (Lists.foldl (\acc -> \jarg -> applyJavaArg acc jarg) baseExpr jargs))) (-          let overrideMethodName =-                  \jid -> Optionals.match mMethodOverride jid (\m ->-                    let s = Syntax.unIdentifier jid-                    in (Syntax.Identifier (Strings.concat2 (Strings.fromList (Lists.take (Math.sub (Strings.length s) (Strings.length JavaNames.applyMethodName)) (Strings.toList s))) m)))-          in (Logic.ifElse (Lists.isEmpty typeApps) (-            let header =-                    Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (overrideMethodName (elementJavaIdentifier isPrim False aliases name)))-            in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-              Syntax.methodInvocationHeader = header,-              Syntax.methodInvocationArguments = jargs})))) (-            let qn = Names.qualifyName name-                mns = Util.qualifiedNameModuleName qn-                localName = Util.qualifiedNameLocal qn-            in (Optionals.match mns (-              let header =-                      Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (overrideMethodName (elementJavaIdentifier isPrim False aliases name)))-              in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-                Syntax.methodInvocationHeader = header,-                Syntax.methodInvocationArguments = jargs})))) (\ns_ ->-              let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)-                  methodId =-                          Logic.ifElse isPrim (overrideMethodName (Syntax.Identifier (Strings.concat2 (Syntax.unIdentifier (Utils.nameToJavaName aliases (Names.unqualifyName (Util.QualifiedName {-                            Util.qualifiedNameModuleName = (Just ns_),-                            Util.qualifiedNameLocal = (Formatting.capitalize localName)})))) (Strings.concat2 "." JavaNames.applyMethodName)))) (Syntax.Identifier (Utils.sanitizeJavaName localName))-              in (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) typeApps) (\jTypeArgs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs jargs))))))))))))--getCodomain :: M.Map Core.Name Core.Term -> t0 -> Graph.Graph -> Either Errors.Error Core.Type-getCodomain ann cx g = Eithers.map (\ft -> Core.functionTypeCodomain ft) (getFunctionType ann cx g)--getFunctionType :: M.Map Core.Name Core.Term -> t0 -> Graph.Graph -> Either Errors.Error Core.FunctionType-getFunctionType ann cx g =-    Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g ann)) (\mt -> Optionals.match mt (Left (Errors.ErrorOther (Errors.OtherError "type annotation is required for function and elimination terms in Java"))) (\t -> case t of-      Core.TypeFunction v0 -> Right v0-      _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "expected function type, got: " (PrintCore.type_ t))))))--groupPairsByFirst :: Ord t0 => ([(t0, t1)] -> M.Map t0 [t1])-groupPairsByFirst pairs =-    Lists.foldl (\m -> \p ->-      let k = Pairs.first p-          v = Pairs.second p-      in (Maps.alter (\mv -> Optionals.match mv (Just [-        v]) (\vs -> Just (Lists.concat2 vs [-        v]))) k m)) Maps.empty pairs--hashCodeCompareExpr :: String -> String -> Syntax.Expression-hashCodeCompareExpr otherVar fname =--      let header =-              Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "Integer"))),-                Syntax.methodInvocation_ComplexTypeArguments = [],-                Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})-          thisHashCode =-                  Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Syntax.ExpressionName {-                        Syntax.expressionNameQualifier = Nothing,-                        Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fname))})),-                      Syntax.methodInvocation_ComplexTypeArguments = [],-                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),-                    Syntax.methodInvocationArguments = []})-          otherHashCode =-                  Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))),-                      Syntax.methodInvocation_ComplexTypeArguments = [],-                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),-                    Syntax.methodInvocationArguments = []})-      in (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-        Syntax.methodInvocationHeader = header,-        Syntax.methodInvocationArguments = [-          thisHashCode,-          otherHashCode]}))--hashCodeMultPair :: Integer -> Core.Name -> Syntax.MultiplicativeExpression-hashCodeMultPair i fname =--      let fnameStr = Core.unName fname-          lhs =-                  Syntax.MultiplicativeExpressionUnary (Utils.javaPrimaryToJavaUnaryExpression (Utils.javaLiteralToJavaPrimary (Utils.javaInt i)))-          rhs =-                  Utils.javaPostfixExpressionToJavaUnaryExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {-                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Objects"))),-                      Syntax.methodInvocation_ComplexTypeArguments = [],-                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),-                    Syntax.methodInvocationArguments = [-                      Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {-                        Syntax.expressionNameQualifier = Nothing,-                        Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fnameStr))})]}))-      in (Syntax.MultiplicativeExpressionTimes (Syntax.MultiplicativeExpression_Binary {-        Syntax.multiplicativeExpression_BinaryLhs = lhs,-        Syntax.multiplicativeExpression_BinaryRhs = rhs}))--hydraOrdinalMethod :: Maybe Int -> Syntax.ClassBodyDeclaration-hydraOrdinalMethod ordinal =--      let mods =-              Logic.ifElse (Optionals.isNone ordinal) [-                Syntax.MethodModifierPublic,-                Syntax.MethodModifierAbstract] [-                Syntax.MethodModifierPublic]-          anns = Logic.ifElse (Optionals.isNone ordinal) [] [-                Utils.overrideAnnotation]-          result = Utils.javaTypeToJavaResult Utils.javaIntType-          body =-                  Optionals.map (\n -> [-                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression (Literals.int32ToBigint n))))]) ordinal-      in (Utils.methodDeclaration mods [] anns JavaNames.hydraOrdinalMethodName [] result body)--innerClassRef :: JavaEnvironment.Aliases -> Core.Name -> String -> Syntax.Identifier-innerClassRef aliases name local =--      let id = Syntax.unIdentifier (Utils.nameToJavaName aliases name)-      in (Syntax.Identifier (Strings.concat2 (Strings.concat2 id ".") local))--insertBranchVar :: Core.Name -> JavaEnvironment.JavaEnvironment -> JavaEnvironment.JavaEnvironment-insertBranchVar name env =--      let aliases = JavaEnvironment.javaEnvironmentAliases env-      in JavaEnvironment.JavaEnvironment {-        JavaEnvironment.javaEnvironmentAliases = JavaEnvironment.Aliases {-          JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),-          JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),-          JavaEnvironment.aliasesBranchVars = (Sets.insert name (JavaEnvironment.aliasesBranchVars aliases)),-          JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases),-          JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),-          JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),-          JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases),-          JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),-          JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases),-          JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),-          JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),-          JavaEnvironment.aliasesMethodCodomain = Nothing,-          JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases)},-        JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env)}--interfaceTypes :: Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> [Syntax.InterfaceType]-interfaceTypes isSer aliases tparams elName =--      let javaSerializableType =-              Syntax.InterfaceType (Syntax.ClassType {-                Syntax.classTypeAnnotations = [],-                Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,-                Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Serializable"),-                Syntax.classTypeArguments = []})-          selfTypeArg =-                  Syntax.TypeArgumentReference (Utils.nameToJavaReferenceType aliases False (Lists.map (\tp_ -> Utils.typeParameterToTypeArgument tp_) tparams) elName Nothing)-          javaComparableType =-                  Syntax.InterfaceType (Syntax.ClassType {-                    Syntax.classTypeAnnotations = [],-                    Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,-                    Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Comparable"),-                    Syntax.classTypeArguments = [-                      selfTypeArg]})-      in (Logic.ifElse isSer [-        javaSerializableType,-        javaComparableType] [])--isBigIntegerType :: Core.Type -> Bool-isBigIntegerType typ =-    case (Strip.deannotateType typ) of-      Core.TypeLiteral v0 -> case v0 of-        Core.LiteralTypeInteger v1 -> case v1 of-          Core.IntegerTypeBigint -> True-          _ -> False-        _ -> False-      _ -> False--isBinaryType :: Core.Type -> Bool-isBinaryType typ =-    case (Strip.deannotateType typ) of-      Core.TypeLiteral v0 -> case v0 of-        Core.LiteralTypeBinary -> True-        _ -> False-      _ -> False--isFieldUnitType :: Core.Name -> Core.Name -> t0 -> Graph.Graph -> Either t1 Bool-isFieldUnitType typeName fieldName cx g =--      let schemaTypes = Graph.graphSchemaTypes g-      in (Optionals.match (Maps.lookup typeName schemaTypes) (Right False) (\ts -> case (Strip.deannotateType (Core.typeSchemeBody ts)) of-        Core.TypeUnion v0 -> Right (Optionals.match (Lists.find (\ft -> Equality.equal (Core.fieldTypeName ft) fieldName) v0) False (\ft -> Predicates.isUnitType (Strip.deannotateType (Core.fieldTypeType ft))))-        _ -> Right False))--isLambdaBoundIn :: Core.Name -> S.Set Core.Name -> Bool-isLambdaBoundIn name lambdaVars =-    Logic.or (Sets.member name lambdaVars) (Logic.or (Logic.and (isLambdaBoundIn_isQualified name) (Optionals.isGiven (Lists.find (\lv -> Logic.and (isLambdaBoundIn_isQualified lv) (Equality.equal (Names.localNameOf lv) (Names.localNameOf name))) (Sets.toList lambdaVars)))) (Logic.and (Logic.not (isLambdaBoundIn_isQualified name)) (Sets.member (Core.Name (Names.localNameOf name)) lambdaVars)))--isLambdaBoundIn_isQualified :: Core.Name -> Bool-isLambdaBoundIn_isQualified n = Optionals.isGiven (Util.qualifiedNameModuleName (Names.qualifyName n))--isLambdaBoundVariable :: Core.Name -> Bool-isLambdaBoundVariable name =--      let v = Core.unName name-      in (Ordering.lte (Strings.length v) 4)--isLocalVariable :: Core.Name -> Bool-isLocalVariable name = Optionals.isNone (Util.qualifiedNameModuleName (Names.qualifyName name))--isNonComparableType :: Core.Type -> Bool-isNonComparableType typ =-    case (Strip.deannotateType typ) of-      Core.TypeEither _ -> True-      Core.TypeFunction _ -> True-      Core.TypeUnit -> True-      Core.TypeLiteral v0 -> case v0 of-        Core.LiteralTypeBinary -> True-        _ -> False-      Core.TypeForall v0 -> isNonComparableType (Core.forallTypeBody v0)-      _ -> False--isRecursiveVariable :: JavaEnvironment.Aliases -> Core.Name -> Bool-isRecursiveVariable aliases name = Sets.member name (JavaEnvironment.aliasesRecursiveVars aliases)--isSerializableJavaType :: Core.Type -> Bool-isSerializableJavaType typ = Predicates.isNominalType typ--isSimpleName :: Core.Name -> Bool-isSimpleName name = Equality.equal (Lists.length (Strings.splitOn "." (Core.unName name))) 1--isUnresolvedInferenceVar :: Core.Name -> Bool-isUnresolvedInferenceVar name =--      let chars = Strings.toList (Core.unName name)-      in (Optionals.withDefault False (Optionals.map (\p ->-        let firstCh = Pairs.first p-            rest = Pairs.second p-        in (Logic.ifElse (Logic.not (Equality.equal firstCh 116)) False (Logic.and (Logic.not (Lists.isEmpty rest)) (Lists.isEmpty (Lists.filter (\c -> Logic.not (isUnresolvedInferenceVar_isDigit c)) rest))))) (Lists.uncons chars)))--isUnresolvedInferenceVar_isDigit :: Int -> Bool-isUnresolvedInferenceVar_isDigit c = Logic.and (Ordering.gte c 48) (Ordering.lte c 57)--java11Features :: JavaEnvironment.JavaFeatures-java11Features = JavaEnvironment.JavaFeatures {-  JavaEnvironment.javaFeaturesSupportsDiamondOperator = True}--java8Features :: JavaEnvironment.JavaFeatures-java8Features = JavaEnvironment.JavaFeatures {-  JavaEnvironment.javaFeaturesSupportsDiamondOperator = False}--javaComparableRefType :: Syntax.ReferenceType-javaComparableRefType =-    Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Syntax.ClassType {-      Syntax.classTypeAnnotations = [],-      Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,-      Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Comparable"),-      Syntax.classTypeArguments = []}))--javaEnvGetGraph :: JavaEnvironment.JavaEnvironment -> Graph.Graph-javaEnvGetGraph env = JavaEnvironment.javaEnvironmentGraph env--javaEnvSetGraph :: Graph.Graph -> JavaEnvironment.JavaEnvironment -> JavaEnvironment.JavaEnvironment-javaEnvSetGraph g env =-    JavaEnvironment.JavaEnvironment {-      JavaEnvironment.javaEnvironmentAliases = (JavaEnvironment.javaEnvironmentAliases env),-      JavaEnvironment.javaEnvironmentGraph = g}--javaFeatures :: JavaEnvironment.JavaFeatures-javaFeatures = java11Features--javaIdentifierToString :: Syntax.Identifier -> String-javaIdentifierToString id = Syntax.unIdentifier id--javaTypeArgumentsForNamedType :: Core.Name -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]-javaTypeArgumentsForNamedType tname cx g =-    Eithers.bind (Resolution.requireType cx g tname) (\typ -> Right (Lists.map (\tp_ -> Utils.typeParameterToTypeArgument tp_) (javaTypeParametersForType typ)))--javaTypeArgumentsForType :: Core.Type -> [Syntax.TypeArgument]-javaTypeArgumentsForType typ = Lists.reverse (Lists.map Utils.typeParameterToTypeArgument (javaTypeParametersForType typ))--javaTypeParametersForType :: Core.Type -> [Syntax.TypeParameter]-javaTypeParametersForType typ =--      let toParam = \name -> Utils.javaTypeParameter (Formatting.capitalize (Core.unName name))-          boundVars = javaTypeParametersForType_bvars typ-          freeVars = Lists.filter (\v -> isLambdaBoundVariable v) (Sets.toList (Variables.freeVariablesInType typ))-          vars = Lists.distinct (Lists.concat2 boundVars freeVars)-      in (Lists.map toParam vars)--javaTypeParametersForType_bvars :: Core.Type -> [Core.Name]-javaTypeParametersForType_bvars t =-    case t of-      Core.TypeForall v0 -> Lists.cons (Core.forallTypeParameter v0) (javaTypeParametersForType_bvars (Core.forallTypeBody v0))-      _ -> []--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))))--moduleToJava :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)-moduleToJava overlaySubs mod defs cx g =-    Eithers.bind (encodeDefinitions overlaySubs mod defs cx g) (\units -> Right (Maps.fromList (Lists.map (\entry ->-      let name = Pairs.first entry-          unit = Pairs.second entry-      in (bindingNameToFilePath name, (Serialization.printExpr (Serialization.parenthesize (Serde.compilationUnitToExpr unit))))) (Maps.toList units))))--nameMapToTypeMap :: Ord t0 => (M.Map t0 Core.Name -> M.Map t0 Core.Type)-nameMapToTypeMap m = Maps.map (\v -> Core.TypeVariable v) m--namespaceParent :: Packaging.ModuleName -> Maybe Packaging.ModuleName-namespaceParent ns =--      let parts = Strings.splitOn "." (Packaging.unModuleName ns)-          initParts = Optionals.withDefault [] (Lists.init parts)-      in (Logic.ifElse (Lists.isEmpty initParts) Nothing (Just (Packaging.ModuleName (Strings.join "." initParts))))--noComment :: Syntax.ClassBodyDeclaration -> Syntax.ClassBodyDeclarationWithComments-noComment decl =-    Syntax.ClassBodyDeclarationWithComments {-      Syntax.classBodyDeclarationWithCommentsValue = decl,-      Syntax.classBodyDeclarationWithCommentsComments = Nothing}--noInterfaceComment :: Syntax.InterfaceMemberDeclaration -> Syntax.InterfaceMemberDeclarationWithComments-noInterfaceComment decl =-    Syntax.InterfaceMemberDeclarationWithComments {-      Syntax.interfaceMemberDeclarationWithCommentsValue = decl,-      Syntax.interfaceMemberDeclarationWithCommentsComments = Nothing}--otherwiseBranch :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Core.Type -> Core.Type -> Core.Name -> Syntax.Type -> [Syntax.TypeArgument] -> Core.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-otherwiseBranch env aliases dom cod tname jcod targs d cx g =--      let jdom = Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True targs tname Nothing)-          mods = [-                Syntax.MethodModifierPublic]-          anns = [-                Utils.overrideAnnotation]-          param = Utils.javaTypeToJavaFormalParameter jdom (Core.Name "instance")-          result = Syntax.ResultType (Syntax.UnannType jcod)-      in (Eithers.bind (analyzeJavaFunction env d cx g) (\fs ->-        let bindings = Typing.functionStructureBindings fs-            rawBody = Typing.functionStructureBody fs-            innerBody = annotateBodyWithCod cod rawBody-            env2 = Typing.functionStructureEnvironment fs-        in (Eithers.bind (bindingsToStatements env2 bindings cx g) (\bindResult ->-          let bindingStmts = Pairs.first bindResult-              env3 = Pairs.second bindResult-          in (Eithers.bind (encodeTerm env3 innerBody cx g) (\jret ->-            let returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))-                allStmts = Lists.concat2 bindingStmts [-                      returnStmt]-            in (Right (noComment (Utils.methodDeclaration mods [] anns JavaNames.otherwiseMethodName [-              param] result (Just allStmts))))))))))--peelDomainTypes :: Int -> Core.Type -> ([Core.Type], Core.Type)-peelDomainTypes n t =-    Logic.ifElse (Ordering.lte n 0) ([], t) (case (Strip.deannotateType t) of-      Core.TypeFunction v0 ->-        let rest = peelDomainTypes (Math.sub n 1) (Core.functionTypeCodomain v0)-        in (Lists.cons (Core.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))-      _ -> ([], t))--peelDomainsAndCod :: Int -> Core.Type -> ([Core.Type], Core.Type)-peelDomainsAndCod n t =-    Logic.ifElse (Ordering.lte n 0) ([], t) (case (Strip.deannotateType t) of-      Core.TypeFunction v0 ->-        let rest = peelDomainsAndCod (Math.sub n 1) (Core.functionTypeCodomain v0)-        in (Lists.cons (Core.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))-      _ -> ([], t))--peelExpectedTypes :: M.Map Core.Name Core.Type -> Int -> Core.Type -> [Core.Type]-peelExpectedTypes subst n t =-    Logic.ifElse (Equality.equal n 0) [] (case (Strip.deannotateType t) of-      Core.TypeFunction v0 -> Lists.cons (applySubstFull subst (Core.functionTypeDomain v0)) (peelExpectedTypes subst (Math.sub n 1) (Core.functionTypeCodomain v0))-      _ -> [])--propagateType :: Core.Type -> Core.Term -> Core.Term-propagateType typ term =--      let setTypeAnn = \t -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ typ)) t-      in case (Strip.deannotateTerm term) of-        Core.TermLambda _ ->-          let annotated = setTypeAnn term-          in case (Strip.deannotateType typ) of-            Core.TypeFunction v1 -> propagateType_propagateIntoLambda (Core.functionTypeCodomain v1) annotated-            _ -> annotated-        Core.TermLet v0 ->-          let propagatedBindings =-                  Lists.map (\b -> Optionals.match (Core.bindingTypeScheme b) b (\ts -> Core.Binding {-                    Core.bindingName = (Core.bindingName b),-                    Core.bindingTerm = (propagateType (Core.typeSchemeBody ts) (Core.bindingTerm b)),-                    Core.bindingTypeScheme = (Core.bindingTypeScheme b)})) (Core.letBindings v0)-          in (setTypeAnn (propagateType_rebuildLet term propagatedBindings (propagateType typ (Core.letBody v0))))-        Core.TermApplication v0 ->-          let fun = Core.applicationFunction v0-              arg = Core.applicationArgument v0-              annotatedFun =-                      case (Strip.deannotateTerm fun) of-                        Core.TermCases v1 ->-                          let dom = Resolution.nominalApplication (Core.caseStatementTypeName v1) []-                              ft =-                                      Core.TypeFunction (Core.FunctionType {-                                        Core.functionTypeDomain = dom,-                                        Core.functionTypeCodomain = typ})-                          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ ft)) fun)-                        _ -> fun-          in (setTypeAnn (Core.TermApplication (Core.Application {-            Core.applicationFunction = annotatedFun,-            Core.applicationArgument = arg})))-        _ -> setTypeAnn term--propagateType_propagateIntoLambda :: Core.Type -> Core.Term -> Core.Term-propagateType_propagateIntoLambda cod t =-    case t of-      Core.TermAnnotated v0 -> Core.TermAnnotated (Core.AnnotatedTerm {-        Core.annotatedTermBody = (propagateType_propagateIntoLambda cod (Core.annotatedTermBody v0)),-        Core.annotatedTermAnnotation = (Core.annotatedTermAnnotation v0)})-      Core.TermLambda v0 -> Core.TermLambda (Core.Lambda {-        Core.lambdaParameter = (Core.lambdaParameter v0),-        Core.lambdaDomain = (Core.lambdaDomain v0),-        Core.lambdaBody = (propagateType cod (Core.lambdaBody v0))})-      _ -> t--propagateType_rebuildLet :: Core.Term -> [Core.Binding] -> Core.Term -> Core.Term-propagateType_rebuildLet t bindings newBody =-    case t of-      Core.TermAnnotated v0 -> Core.TermAnnotated (Core.AnnotatedTerm {-        Core.annotatedTermBody = (propagateType_rebuildLet (Core.annotatedTermBody v0) bindings newBody),-        Core.annotatedTermAnnotation = (Core.annotatedTermAnnotation v0)})-      Core.TermLet _ -> Core.TermLet (Core.Let {-        Core.letBindings = bindings,-        Core.letBody = newBody})-      _ -> t--propagateTypesInAppChain :: Core.Type -> Core.Type -> Core.Term -> Core.Term-propagateTypesInAppChain fixedCod resultType t =--      let flattened = flattenApps t []-          args = Pairs.first flattened-          fun = Pairs.second flattened-          lambdaDomsResult = collectLambdaDomains fun-          lambdaDoms = Pairs.first lambdaDomsResult-          nArgs = Lists.length args-          nLambdaDoms = Lists.length lambdaDoms-      in (Logic.ifElse (Logic.and (Ordering.gt nLambdaDoms 0) (Ordering.gt nArgs 0)) (-        let bodyRetType = Pairs.second (peelDomainsAndCod (Math.sub nLambdaDoms nArgs) resultType)-            funType =-                    Lists.foldl (\c -> \d -> Core.TypeFunction (Core.FunctionType {-                      Core.functionTypeDomain = d,-                      Core.functionTypeCodomain = c})) bodyRetType (Lists.reverse lambdaDoms)-            annotatedFun = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ funType)) fun-        in (rebuildApps annotatedFun args funType)) (case (Strip.deannotateTerm t) of-        Core.TermApplication v0 ->-          let lhs = Core.applicationFunction v0-              rhs = Core.applicationArgument v0-              annotatedLhs =-                      case (Strip.deannotateTerm lhs) of-                        Core.TermCases v1 ->-                          let dom = Resolution.nominalApplication (Core.caseStatementTypeName v1) []-                              ft =-                                      Core.TypeFunction (Core.FunctionType {-                                        Core.functionTypeDomain = dom,-                                        Core.functionTypeCodomain = fixedCod})-                          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ ft)) lhs)-                        _ -> lhs-          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ resultType)) (Core.TermApplication (Core.Application {-            Core.applicationFunction = annotatedLhs,-            Core.applicationArgument = rhs})))-        _ -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ resultType)) t))--rebuildApps :: Core.Term -> [Core.Term] -> Core.Type -> Core.Term-rebuildApps f args fType =-    Logic.ifElse (Lists.isEmpty args) f (case (Strip.deannotateType fType) of-      Core.TypeFunction v0 -> Optionals.withDefault f (Optionals.map (\p ->-        let arg = Pairs.first p-            rest = Pairs.second p-            remainingType = Core.functionTypeCodomain v0-            app =-                    Core.TermApplication (Core.Application {-                      Core.applicationFunction = f,-                      Core.applicationArgument = arg})-            annotatedApp = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ remainingType)) app-        in (rebuildApps annotatedApp rest remainingType)) (Lists.uncons args))-      _ -> Lists.foldl (\acc -> \a -> Core.TermApplication (Core.Application {-        Core.applicationFunction = acc,-        Core.applicationArgument = a})) f args)--recordBuilderClass :: JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> [Core.FieldType] -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.ClassBodyDeclarationWithComments]-recordBuilderClass aliases tparams elName fields cx g =--      let typeArgRefs = Lists.map Utils.typeParameterToReferenceType tparams-          typeArgs = Lists.map (\rt -> Syntax.TypeArgumentReference rt) typeArgRefs-          mTypeArgs = Logic.ifElse (Lists.isEmpty tparams) Nothing (Just (Syntax.TypeArgumentsOrDiamondArguments typeArgs))-          recordLocalName = Utils.sanitizeJavaName (Names.localNameOf elName)-          builderType = Utils.javaRefType typeArgRefs Nothing "Builder"-          builderResult = Utils.javaTypeToJavaResult builderType-          recordType = Utils.javaRefType typeArgRefs Nothing recordLocalName-          recordResult = Utils.javaTypeToJavaResult recordType-          returnThisStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just Utils.javaThis))-      in (Eithers.bind (Eithers.mapList (\f ->-        let mods = [-              Syntax.FieldModifierPrivate]-            ftype = Core.fieldTypeType f-            fname = Core.fieldTypeName f-        in (Eithers.bind (encodeType aliases Sets.empty ftype cx g) (\jt -> Right (noComment (Utils.javaMemberField mods jt (Utils.fieldNameToJavaVariableDeclarator fname)))))) fields) (\builderFields -> Eithers.bind (Eithers.mapList (\f ->-        let mods = [-              Syntax.MethodModifierPublic]-            fname = Core.fieldTypeName f-            assignStmt = Syntax.BlockStatementStatement (Utils.toAssignStmt fname)-        in (Eithers.bind (fieldTypeToFormalParam aliases f cx g) (\param -> Right (noComment (Utils.methodDeclaration mods [] [] (builderSetterName fname) [-          param] builderResult (Just [-          assignStmt,-          returnThisStmt])))))) fields) (\setterMethods ->-        let buildMods = [-              Syntax.MethodModifierPublic]-            buildArgs = Lists.map (\f -> Utils.fieldNameToJavaExpression (Core.fieldTypeName f)) fields-            buildReturnStmt =-                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier recordLocalName) mTypeArgs) buildArgs Nothing)))-            buildMethod =-                    withCommentString (Strings.concat2 "Builds an immutable {@link " (Strings.concat2 recordLocalName "}.")) (Utils.methodDeclaration buildMods [] [] "build" [] recordResult (Just [-                      buildReturnStmt]))-            builderClassDecl =-                    Utils.javaClassDeclaration aliases tparams (Core.Name "Builder") [-                      Syntax.ClassModifierPublic,-                      Syntax.ClassModifierStatic,-                      Syntax.ClassModifierFinal] Nothing [] (Lists.concat [-                      builderFields,-                      setterMethods,-                      [-                        buildMethod]])-            builderClassMember =-                    withCommentString (Strings.concat2 "A fluent builder for {@link " (Strings.concat2 recordLocalName "}.")) (Syntax.ClassBodyDeclarationClassMember (Syntax.ClassMemberDeclarationClass builderClassDecl))-            factoryMods =-                    [-                      Syntax.MethodModifierPublic,-                      Syntax.MethodModifierStatic]-            factoryReturnStmt =-                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "Builder") mTypeArgs) [] Nothing)))-            factoryMethod =-                    withCommentString (Strings.concat2 "Creates a new fluent builder for {@link " (Strings.concat2 recordLocalName "}.")) (Utils.methodDeclaration factoryMods tparams [] "builder" [] builderResult (Just [-                      factoryReturnStmt]))-        in (Right [-          factoryMethod,-          builderClassMember]))))--recordCompareToMethod :: JavaEnvironment.Aliases -> t0 -> Core.Name -> [Core.FieldType] -> Syntax.ClassBodyDeclaration-recordCompareToMethod aliases tparams elName fields =--      let anns =-              [-                Utils.overrideAnnotation,-                Utils.suppressWarningsUncheckedAnnotation]-          mods = [-                Syntax.MethodModifierPublic]-          param =-                  Utils.javaTypeToJavaFormalParameter (Utils.javaTypeFromTypeName aliases elName) (Core.Name JavaNames.otherInstanceName)-          result = Utils.javaTypeToJavaResult Utils.javaIntType-      in (Utils.methodDeclaration mods [] anns JavaNames.compareToMethodName [-        param] result (Just (compareToBody aliases JavaNames.otherInstanceName fields)))--recordConstructor :: JavaEnvironment.Aliases -> Core.Name -> [Core.FieldType] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration-recordConstructor aliases elName fields cx g =--      let assignStmts = Lists.map (\f -> Syntax.BlockStatementStatement (Utils.toAssignStmt (Core.fieldTypeName f))) fields-      in (Eithers.bind (Eithers.mapList (\f -> fieldTypeToFormalParam aliases f cx g) fields) (\params -> Right (Utils.makeConstructor aliases elName False params assignStmts)))--recordEqualsMethod :: JavaEnvironment.Aliases -> Core.Name -> [Core.FieldType] -> Syntax.ClassBodyDeclaration-recordEqualsMethod aliases elName fields =--      let anns = [-            Utils.overrideAnnotation]-          mods = [-                Syntax.MethodModifierPublic]-          param = Utils.javaTypeToJavaFormalParameter (Utils.javaRefType [] Nothing "Object") (Core.Name JavaNames.otherInstanceName)-          result = Utils.javaTypeToJavaResult Utils.javaBooleanType-          tmpName = "o"-          instanceOfStmt =-                  Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {-                    Syntax.ifThenStatementExpression = (Utils.javaUnaryExpressionToJavaExpression (Syntax.UnaryExpressionOther (Syntax.UnaryExpressionNotPlusMinusNot (Utils.javaRelationalExpressionToJavaUnaryExpression (Utils.javaInstanceOf (Utils.javaIdentifierToJavaRelationalExpression (Utils.javaIdentifier JavaNames.otherInstanceName)) (Utils.nameToJavaReferenceType aliases False [] elName Nothing)))))),-                    Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaBooleanExpression False)))}))-          castStmt =-                  Utils.variableDeclarationStatement aliases (Utils.javaTypeFromTypeName aliases elName) (Utils.javaIdentifier tmpName) (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression (Utils.nameToJavaReferenceType aliases False [] elName Nothing) (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier (Utils.sanitizeJavaName JavaNames.otherInstanceName)))))-          returnAllFieldsEqual =-                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Logic.ifElse (Lists.isEmpty fields) (Utils.javaBooleanExpression True) (Utils.javaConditionalAndExpressionToJavaExpression (Syntax.ConditionalAndExpression (Lists.map (\f -> eqClause tmpName f) fields))))))-      in (Utils.methodDeclaration mods [] anns JavaNames.equalsMethodName [-        param] result (Just [-        instanceOfStmt,-        castStmt,-        returnAllFieldsEqual]))--recordHashCodeMethod :: [Core.FieldType] -> Syntax.ClassBodyDeclaration-recordHashCodeMethod fields =--      let anns = [-            Utils.overrideAnnotation]-          mods = [-                Syntax.MethodModifierPublic]-          result = Utils.javaTypeToJavaResult Utils.javaIntType-          returnSum =-                  Syntax.BlockStatementStatement (Logic.ifElse (Lists.isEmpty fields) (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0))) (Utils.javaReturnStatement (Just (Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions (Lists.zipWith hashCodeMultPair first20Primes (Lists.map (\f -> Core.fieldTypeName f) fields)))))))-      in (Utils.methodDeclaration mods [] anns JavaNames.hashCodeMethodName [] result (Just [-        returnSum]))--recordMemberVar :: JavaEnvironment.Aliases -> Core.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration-recordMemberVar aliases ft cx g =--      let mods =-              [-                Syntax.FieldModifierPublic,-                Syntax.FieldModifierFinal]-          fname = Core.fieldTypeName ft-          ftype = Core.fieldTypeType ft-      in (Eithers.bind (encodeType aliases Sets.empty ftype cx g) (\jt -> Right (Utils.javaMemberField mods jt (Utils.fieldNameToJavaVariableDeclarator fname))))--recordToStringMethod :: Core.Name -> [Core.FieldType] -> Syntax.ClassBodyDeclaration-recordToStringMethod elName fields =--      let anns = [-            Utils.overrideAnnotation]-          mods = [-                Syntax.MethodModifierPublic]-          result = Utils.javaTypeToJavaResult (Utils.javaRefType [] Nothing "String")-          className = Core.unName elName-          fieldParts = Lists.drop 1 (Lists.concat (Lists.map fieldToStringPart fields))-          allParts =-                  Lists.concat2 [-                    Utils.javaStringMultiplicativeExpression (Strings.concat2 className "{")] (Lists.concat2 fieldParts [-                    Utils.javaStringMultiplicativeExpression "}"])-          returnStr =-                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions allParts))))-      in (Utils.methodDeclaration mods [] anns JavaNames.toStringMethodName [] result (Just [-        returnStr]))--recordWithMethod :: JavaEnvironment.Aliases -> Core.Name -> [Core.FieldType] -> Core.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration-recordWithMethod aliases elName fields field cx g =--      let mods = [-            Syntax.MethodModifierPublic]-          anns = []-          methodName =-                  Strings.concat2 "with" (Formatting.nonAlnumToUnderscores (Formatting.capitalize (Core.unName (Core.fieldTypeName field))))-          result = Utils.referenceTypeToResult (Utils.nameToJavaReferenceType aliases False [] elName Nothing)-          consId = Syntax.Identifier (Utils.sanitizeJavaName (Names.localNameOf elName))-          fieldArgs = Lists.map (\f -> Utils.fieldNameToJavaExpression (Core.fieldTypeName f)) fields-          returnStmt =-                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName consId Nothing) fieldArgs Nothing)))-      in (Eithers.bind (fieldTypeToFormalParam aliases field cx g) (\param -> Right (Utils.methodDeclaration mods [] anns methodName [-        param] result (Just [-        returnStmt]))))--resolveTypeApps :: [Core.Name] -> [Core.Type] -> M.Map Core.Name Core.Type -> [Core.Type]-resolveTypeApps schemeVars fallbackTypeApps argSubst =--      let resolvedVars = Sets.fromList (Maps.keys argSubst)-          unresolvedVars = Lists.filter (\v -> Logic.not (Sets.member v resolvedVars)) schemeVars-          usedTypes = Sets.fromList (Maps.elems argSubst)-          unusedIrTypes = Lists.filter (\t -> Logic.not (Sets.member t usedTypes)) fallbackTypeApps-          remainingSubst = Maps.fromList (Lists.zip unresolvedVars unusedIrTypes)-          fullSubst = Maps.union argSubst remainingSubst-      in (Lists.map (\v -> Maps.findWithDefault (Core.TypeVariable v) v fullSubst) schemeVars)--selfRefSubstitution :: (Eq t0, Ord t0) => (M.Map t0 [t0] -> M.Map t0 t0)-selfRefSubstitution grouped =-    Lists.foldl (\subst -> \entry -> selfRefSubstitution_processGroup subst (Pairs.first entry) (Pairs.second entry)) Maps.empty (Maps.toList grouped)--selfRefSubstitution_processGroup :: (Eq t0, Ord t0) => (M.Map t0 t0 -> t0 -> [t0] -> M.Map t0 t0)-selfRefSubstitution_processGroup subst inVar outVars =-    Logic.ifElse (Lists.member inVar outVars) (Lists.foldl (\s -> \v -> Logic.ifElse (Equality.equal v inVar) s (Maps.insert v inVar s)) subst outVars) subst--serializableTypes :: Bool -> [Syntax.InterfaceType]-serializableTypes isSer =--      let javaSerializableType =-              Syntax.InterfaceType (Syntax.ClassType {-                Syntax.classTypeAnnotations = [],-                Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,-                Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Serializable"),-                Syntax.classTypeArguments = []})-      in (Logic.ifElse isSer [-        javaSerializableType] [])--splitConstantInitializer :: Syntax.InterfaceMemberDeclaration -> [Syntax.InterfaceMemberDeclaration]-splitConstantInitializer member =-    case member of-      Syntax.InterfaceMemberDeclarationConstant v0 -> Lists.bind (Syntax.constantDeclarationVariables v0) (splitConstantInitializer_splitVar (Syntax.constantDeclarationModifiers v0) (Syntax.constantDeclarationType v0))-      _ -> [-        member]--splitConstantInitializer_splitVar :: [Syntax.ConstantModifier] -> Syntax.UnannType -> Syntax.VariableDeclarator -> [Syntax.InterfaceMemberDeclaration]-splitConstantInitializer_splitVar mods utype vd =--      let vid = Syntax.variableDeclaratorId vd-          mInit = Syntax.variableDeclaratorInitializer vd-      in (Optionals.match mInit [-        Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {-          Syntax.constantDeclarationModifiers = mods,-          Syntax.constantDeclarationType = utype,-          Syntax.constantDeclarationVariables = [-            vd]})] (\init_ -> case init_ of-        Syntax.VariableInitializerExpression v0 ->-          let varName = javaIdentifierToString (Syntax.variableDeclaratorIdIdentifier vid)-              helperName = Strings.concat2 "_init_" varName-              callExpr = Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (Syntax.Identifier helperName) [])-              field =-                      Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {-                        Syntax.constantDeclarationModifiers = mods,-                        Syntax.constantDeclarationType = utype,-                        Syntax.constantDeclarationVariables = [-                          Syntax.VariableDeclarator {-                            Syntax.variableDeclaratorId = vid,-                            Syntax.variableDeclaratorInitializer = (Just (Syntax.VariableInitializerExpression callExpr))}]})-              returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just v0))-              resultType = Syntax.ResultType utype-              helper =-                      Utils.interfaceMethodDeclaration [-                        Syntax.InterfaceMethodModifierStatic,-                        Syntax.InterfaceMethodModifierPrivate] [] helperName [] resultType (Just [-                        returnSt])-          in [-            field,-            helper]-        _ -> [-          Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {-            Syntax.constantDeclarationModifiers = mods,-            Syntax.constantDeclarationType = utype,-            Syntax.constantDeclarationVariables = [-              vd]})]))--stripForalls :: Core.Type -> Core.Type-stripForalls t =-    case (Strip.deannotateType t) of-      Core.TypeForall v0 -> stripForalls (Core.forallTypeBody v0)-      _ -> t--substituteTypeVarsWithTypes :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type-substituteTypeVarsWithTypes subst t = substituteTypeVarsWithTypes_go subst (Strip.deannotateType t)--substituteTypeVarsWithTypes_go :: M.Map Core.Name Core.Type -> Core.Type -> Core.Type-substituteTypeVarsWithTypes_go subst t =-    case (Strip.deannotateType t) of-      Core.TypeVariable v0 -> Optionals.match (Maps.lookup v0 subst) t (\rep -> rep)-      Core.TypeFunction v0 -> Core.TypeFunction (Core.FunctionType {-        Core.functionTypeDomain = (substituteTypeVarsWithTypes_go subst (Core.functionTypeDomain v0)),-        Core.functionTypeCodomain = (substituteTypeVarsWithTypes_go subst (Core.functionTypeCodomain v0))})-      Core.TypeApplication v0 -> Core.TypeApplication (Core.ApplicationType {-        Core.applicationTypeFunction = (substituteTypeVarsWithTypes_go subst (Core.applicationTypeFunction v0)),-        Core.applicationTypeArgument = (substituteTypeVarsWithTypes_go subst (Core.applicationTypeArgument v0))})-      Core.TypeList v0 -> Core.TypeList (substituteTypeVarsWithTypes_go subst v0)-      Core.TypeSet v0 -> Core.TypeSet (substituteTypeVarsWithTypes_go subst v0)-      Core.TypeOptional v0 -> Core.TypeOptional (substituteTypeVarsWithTypes_go subst v0)-      Core.TypeEffect v0 -> Core.TypeEffect (substituteTypeVarsWithTypes_go subst v0)-      Core.TypeMap v0 -> Core.TypeMap (Core.MapType {-        Core.mapTypeKeys = (substituteTypeVarsWithTypes_go subst (Core.mapTypeKeys v0)),-        Core.mapTypeValues = (substituteTypeVarsWithTypes_go subst (Core.mapTypeValues v0))})-      Core.TypePair v0 -> Core.TypePair (Core.PairType {-        Core.pairTypeFirst = (substituteTypeVarsWithTypes_go subst (Core.pairTypeFirst v0)),-        Core.pairTypeSecond = (substituteTypeVarsWithTypes_go subst (Core.pairTypeSecond v0))})-      Core.TypeEither v0 -> Core.TypeEither (Core.EitherType {-        Core.eitherTypeLeft = (substituteTypeVarsWithTypes_go subst (Core.eitherTypeLeft v0)),-        Core.eitherTypeRight = (substituteTypeVarsWithTypes_go subst (Core.eitherTypeRight v0))})-      Core.TypeForall v0 -> Core.TypeForall (Core.ForallType {-        Core.forallTypeParameter = (Core.forallTypeParameter v0),-        Core.forallTypeBody = (substituteTypeVarsWithTypes_go subst (Core.forallTypeBody v0))})-      _ -> t--tagCmpNotZeroExpr :: Syntax.Expression-tagCmpNotZeroExpr =-    Utils.javaEqualityExpressionToJavaExpression (Syntax.EqualityExpressionNotEqual (Syntax.EqualityExpression_Binary {-      Syntax.equalityExpression_BinaryLhs = lhs,-      Syntax.equalityExpression_BinaryRhs = rhs}))-  where-    lhs =-        Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionName (Syntax.ExpressionName {-          Syntax.expressionNameQualifier = Nothing,-          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "tagCmp")})))-    rhs =-        Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))--tagCompareExpr :: Syntax.Expression-tagCompareExpr =-    Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {-      Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-        Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "Integer"))),-        Syntax.methodInvocation_ComplexTypeArguments = [],-        Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})),-      Syntax.methodInvocationArguments = [-        Utils.javaMethodInvocationToJavaExpression thisOrdinal,-        (Utils.javaMethodInvocationToJavaExpression otherOrdinal)]})-  where-    thisOrdinal =-        Syntax.MethodInvocation {-          Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-            Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantPrimary (Utils.javaExpressionToJavaPrimary Utils.javaThis)),-            Syntax.methodInvocation_ComplexTypeArguments = [],-            Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hydraOrdinalMethodName)})),-          Syntax.methodInvocationArguments = []}-    otherOrdinal =-        Syntax.MethodInvocation {-          Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {-            Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Syntax.ExpressionName {-              Syntax.expressionNameQualifier = Nothing,-              Syntax.expressionNameIdentifier = (Syntax.Identifier JavaNames.otherInstanceName)})),-            Syntax.methodInvocation_ComplexTypeArguments = [],-            Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hydraOrdinalMethodName)})),-          Syntax.methodInvocationArguments = []}--takeTypeArgs :: String -> Int -> [Syntax.Type] -> t0 -> t1 -> Either Errors.Error [Syntax.TypeArgument]-takeTypeArgs label n tyapps cx g =-    Logic.ifElse (Ordering.lt (Lists.length tyapps) n) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat [-      "needed type arguments for ",-      label,-      ", found too few"])))) (Eithers.mapList (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt))) (Lists.take n tyapps))--toClassDecl :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> Core.Type -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration-toClassDecl isInner isSer aliases tparams elName t cx g =--      let wrap =-              \t_ -> declarationForRecordType isInner isSer aliases tparams elName [-                Core.FieldType {-                  Core.fieldTypeName = (Core.Name "value"),-                  Core.fieldTypeType = (Strip.deannotateType t_)}] cx g-      in case (Strip.deannotateType t) of-        Core.TypeRecord v0 -> declarationForRecordType isInner isSer aliases tparams elName v0 cx g-        Core.TypeUnion v0 -> declarationForUnionType isSer aliases tparams elName v0 cx g-        Core.TypeForall v0 ->-          let v = Core.forallTypeParameter v0-              body = Core.forallTypeBody v0-              param = Utils.javaTypeParameter (Formatting.capitalize (Core.unName v))-          in (toClassDecl False isSer aliases (Lists.concat2 tparams [-            param]) elName body cx g)-        Core.TypeWrap v0 -> declarationForRecordType isInner isSer aliases tparams elName [-          Core.FieldType {-            Core.fieldTypeName = (Core.Name "value"),-            Core.fieldTypeType = v0}] cx g-        _ -> wrap t--toDeclInit :: JavaEnvironment.Aliases -> Graph.Graph -> S.Set Core.Name -> [Core.Binding] -> Core.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (Maybe Syntax.BlockStatement)-toDeclInit aliasesExt gExt recursiveVars flatBindings name cx g =-    Logic.ifElse (Sets.member name recursiveVars) (-      let binding =-              Optionals.withDefault (Core.Binding {-                Core.bindingName = name,-                Core.bindingTerm = Core.TermUnit,-                Core.bindingTypeScheme = Nothing}) (Lists.head (Lists.filter (\b -> Equality.equal (Core.bindingName b) name) flatBindings))-          value = Core.bindingTerm binding-      in (Eithers.bind (Optionals.match (Core.bindingTypeScheme binding) (Checking.typeOfTerm cx gExt value) (\ts -> Right (Core.typeSchemeBody ts))) (\typ -> Eithers.bind (encodeType aliasesExt Sets.empty typ cx g) (\jtype ->-        let id = Utils.variableToJavaIdentifier name-            arid = Syntax.Identifier "java.util.concurrent.atomic.AtomicReference"-            aid =-                    Syntax.AnnotatedIdentifier {-                      Syntax.annotatedIdentifierAnnotations = [],-                      Syntax.annotatedIdentifierIdentifier = arid}-        in (Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt ->-          let targs = typeArgsOrDiamond [-                Syntax.TypeArgumentReference rt]-              ci =-                      Syntax.ClassOrInterfaceTypeToInstantiate {-                        Syntax.classOrInterfaceTypeToInstantiateIdentifiers = [-                          aid],-                        Syntax.classOrInterfaceTypeToInstantiateTypeArguments = (Just targs)}-              body = Utils.javaConstructorCall ci [] Nothing-              pkg =-                      JavaNames.javaPackageName [-                        "java",-                        "util",-                        "concurrent",-                        "atomic"]-              artype = Utils.javaRefType [-                    rt] (Just pkg) "AtomicReference"-          in (Right (Just (Utils.variableDeclarationStatement aliasesExt artype id body))))))))) (Right Nothing)--toDeclStatement :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Graph.Graph -> S.Set Core.Name -> S.Set Core.Name -> [Core.Binding] -> Core.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.BlockStatement-toDeclStatement envExt aliasesExt gExt recursiveVars thunkedVars flatBindings name cx g =--      let binding =-              Optionals.withDefault (Core.Binding {-                Core.bindingName = name,-                Core.bindingTerm = Core.TermUnit,-                Core.bindingTypeScheme = Nothing}) (Lists.head (Lists.filter (\b -> Equality.equal (Core.bindingName b) name) flatBindings))-          value = Core.bindingTerm binding-      in (Eithers.bind (Optionals.match (Core.bindingTypeScheme binding) (Checking.typeOfTerm cx gExt value) (\ts -> Right (Core.typeSchemeBody ts))) (\typ -> Eithers.bind (encodeType aliasesExt Sets.empty typ cx g) (\jtype ->-        let id = Utils.variableToJavaIdentifier name-            annotatedValue = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ typ)) value-        in (Eithers.bind (encodeTerm envExt annotatedValue cx g) (\rhs -> Logic.ifElse (Sets.member name recursiveVars) (Right (Syntax.BlockStatementStatement (Utils.javaMethodInvocationToJavaStatement (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {-          Syntax.expressionNameQualifier = Nothing,-          Syntax.expressionNameIdentifier = id}))) (Syntax.Identifier JavaNames.setMethodName) [-          rhs])))) (Logic.ifElse (Sets.member name thunkedVars) (Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt ->-          let lazyType = Utils.javaRefType [-                rt] JavaNames.hydraUtilPackageName "Lazy"-              lambdaBody = Syntax.LambdaBodyExpression rhs-              supplierLambda =-                      Syntax.ExpressionLambda (Syntax.LambdaExpression {-                        Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),-                        Syntax.lambdaExpressionBody = lambdaBody})-              targs = typeArgsOrDiamond [-                    Syntax.TypeArgumentReference rt]-              lazyExpr =-                      Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "hydra.overlay.java.util.Lazy") (Just targs)) [-                        supplierLambda] Nothing-          in (Right (Utils.variableDeclarationStatement aliasesExt lazyType id lazyExpr)))) (Right (Utils.variableDeclarationStatement aliasesExt jtype id rhs))))))))--tryInferFunctionType :: Core.Term -> Maybe Core.Type-tryInferFunctionType funTerm =-    case (Strip.deannotateTerm funTerm) of-      Core.TermLambda v0 -> Optionals.bind (Core.lambdaDomain v0) (\dom ->-        let mCod =-                case (Core.lambdaBody v0) of-                  Core.TermAnnotated v1 -> Optionals.bind (Maps.lookup Constants.keyType (Annotations.getAnnotationMap (Core.annotatedTermAnnotation v1))) (\typeTerm -> decodeTypeFromTerm typeTerm)-                  Core.TermLambda _ -> tryInferFunctionType (Core.lambdaBody v0)-                  _ -> Nothing-        in (Optionals.map (\cod -> Core.TypeFunction (Core.FunctionType {-          Core.functionTypeDomain = dom,-          Core.functionTypeCodomain = cod})) mCod))-      _ -> Nothing--typeAppFallbackCast :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> [M.Map Core.Name Core.Term] -> [Syntax.Type] -> Syntax.Type -> Core.Term -> Core.Type -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-typeAppFallbackCast env aliases anns tyapps jatyp body typ cx g =--      let annotatedBody = Annotations.setTermAnnotation Constants.keyType (Just (EncodeCore.type_ typ)) body-      in (Eithers.bind (encodeTermInternal env anns (Lists.cons jatyp tyapps) annotatedBody cx g) (\jbody -> Eithers.bind (encodeType aliases Sets.empty typ cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression jbody)))))))--typeAppNullaryOrHoisted :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> [M.Map Core.Name Core.Term] -> [Syntax.Type] -> Syntax.Type -> Core.Term -> Core.Type -> Core.Name -> JavaEnvironment.JavaSymbolClass -> [Core.Type] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression-typeAppNullaryOrHoisted env aliases anns tyapps jatyp body correctedTyp varName cls allTypeArgs cx g =--      let qn = Names.qualifyName varName-          mns = Util.qualifiedNameModuleName qn-          localName = Util.qualifiedNameLocal qn-      in case cls of-        JavaEnvironment.JavaSymbolClassNullaryFunction -> Optionals.match mns (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g) (\ns_ ->-          let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)-              methodId = Syntax.Identifier (Utils.sanitizeJavaName localName)-          in (Eithers.bind (filterPhantomTypeArgs varName allTypeArgs cx g) (\filteredTypeArgs -> Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) filteredTypeArgs) (\jTypeArgs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs []))))))-        JavaEnvironment.JavaSymbolClassHoistedLambda v0 -> Optionals.match mns (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g) (\ns_ ->-          let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)-              methodId = Syntax.Identifier (Utils.sanitizeJavaName localName)-          in (Eithers.bind (filterPhantomTypeArgs varName allTypeArgs cx g) (\filteredTypeArgs -> Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) filteredTypeArgs) (\jTypeArgs ->-            let paramNames = Lists.map (\i -> Core.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 v0)-                paramExprs = Lists.map (\p -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier p)) paramNames-                call =-                        Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs paramExprs)-            in (Right (buildCurriedLambda paramNames call))))))-        _ -> typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g--typeArgsOrDiamond :: [Syntax.TypeArgument] -> Syntax.TypeArgumentsOrDiamond-typeArgsOrDiamond args =-    Logic.ifElse (JavaEnvironment.javaFeaturesSupportsDiamondOperator javaFeatures) Syntax.TypeArgumentsOrDiamondDiamond (Syntax.TypeArgumentsOrDiamondArguments args)--typesMatch :: Core.Type -> Core.Type -> Bool-typesMatch a b =-    case a of-      Core.TypeVariable v0 -> case b of-        Core.TypeVariable v1 -> Equality.equal v0 v1-        _ -> True-      Core.TypeWrap v0 -> case b of-        Core.TypeWrap v1 -> Equality.equal v0 v1-        _ -> True-      _ -> True--unwrapReturnType :: Core.Type -> Core.Type-unwrapReturnType t =-    case (Strip.deannotateType t) of-      Core.TypeFunction v0 -> unwrapReturnType (Core.functionTypeCodomain v0)-      Core.TypeApplication v0 -> unwrapReturnType (Core.applicationTypeArgument v0)-      _ -> t--variantCompareToMethod :: JavaEnvironment.Aliases -> t0 -> Core.Name -> Core.Name -> Int -> [Core.FieldType] -> [Syntax.ClassBodyDeclaration]-variantCompareToMethod aliases tparams parentName variantName ordinal fields =--      let anns =-              [-                Utils.overrideAnnotation,-                Utils.suppressWarningsUncheckedAnnotation]-          mods = [-                Syntax.MethodModifierPublic]-          param =-                  Utils.javaTypeToJavaFormalParameter (Utils.javaTypeFromTypeName aliases parentName) (Core.Name JavaNames.otherInstanceName)-          result = Utils.javaTypeToJavaResult Utils.javaIntType-          varTmpName = "o"-          tagDeclStmt = Utils.variableDeclarationStatement aliases Utils.javaIntType (Utils.javaIdentifier "tagCmp") tagCompareExpr-          tagReturnStmt =-                  Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {-                    Syntax.ifThenStatementExpression = tagCmpNotZeroExpr,-                    Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {-                      Syntax.expressionNameQualifier = Nothing,-                      Syntax.expressionNameIdentifier = (Utils.javaIdentifier "tagCmp")}))))}))-          variantJavaType = Utils.javaTypeFromTypeName aliases variantName-          castOtherExpr =-                  Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression (Utils.nameToJavaReferenceType aliases False [] variantName Nothing) (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier JavaNames.otherInstanceName)))-          castDeclStmt = Utils.variableDeclarationStatement aliases variantJavaType (Utils.javaIdentifier varTmpName) castOtherExpr-          emptyReturn = [-                Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0)))]-          valueCompareStmt =-                  Logic.ifElse (Lists.isEmpty fields) emptyReturn (Lists.concat2 [-                    castDeclStmt] (compareToBody aliases varTmpName fields))-          body =-                  Lists.concat2 [-                    tagDeclStmt,-                    tagReturnStmt] valueCompareStmt-      in [-        Utils.methodDeclaration mods [] anns JavaNames.compareToMethodName [-          param] result (Just body),-        (hydraOrdinalMethod (Just ordinal))]--visitBranch :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Core.Type -> Core.Name -> Syntax.Type -> [Syntax.TypeArgument] -> Core.CaseAlternative -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments-visitBranch env aliases dom tname jcod targs field cx g =--      let jdom =-              Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True targs tname (Just (Formatting.capitalize (Core.unName (Core.caseAlternativeName field)))))-          mods = [-                Syntax.MethodModifierPublic]-          anns = [-                Utils.overrideAnnotation]-          result = Syntax.ResultType (Syntax.UnannType jcod)-      in case (Strip.deannotateTerm (Core.caseAlternativeHandler field)) of-        Core.TermLambda v0 -> withLambda env v0 (\env2 ->-          let lambdaParam = Core.lambdaParameter v0-              body = Core.lambdaBody v0-              env3 = insertBranchVar lambdaParam env2-          in (Eithers.bind (analyzeJavaFunction env3 body cx g) (\fs ->-            let bindings = Typing.functionStructureBindings fs-                innerBody = Typing.functionStructureBody fs-                env4 = Typing.functionStructureEnvironment fs-            in (Eithers.bind (bindingsToStatements env4 bindings cx g) (\bindResult ->-              let bindingStmts = Pairs.first bindResult-                  env5 = Pairs.second bindResult-              in (Eithers.bind (encodeTerm env5 innerBody cx g) (\jret ->-                let param = Utils.javaTypeToJavaFormalParameter jdom lambdaParam-                    returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))-                    allStmts = Lists.concat2 bindingStmts [-                          returnStmt]-                in (Right (noComment (Utils.methodDeclaration mods [] anns JavaNames.visitMethodName [-                  param] result (Just allStmts)))))))))))-        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "visitBranch: field term is not a lambda: " (PrintCore.term (Core.caseAlternativeHandler field)))))--withCommentString :: String -> Syntax.ClassBodyDeclaration -> Syntax.ClassBodyDeclarationWithComments-withCommentString comment decl =-    Syntax.ClassBodyDeclarationWithComments {-      Syntax.classBodyDeclarationWithCommentsValue = decl,-      Syntax.classBodyDeclarationWithCommentsComments = (Just comment)}--withInterfaceCommentString :: String -> Syntax.InterfaceMemberDeclaration -> Syntax.InterfaceMemberDeclarationWithComments-withInterfaceCommentString comment decl =-    Syntax.InterfaceMemberDeclarationWithComments {-      Syntax.interfaceMemberDeclarationWithCommentsValue = decl,-      Syntax.interfaceMemberDeclarationWithCommentsComments = (Just comment)}--withLambda :: JavaEnvironment.JavaEnvironment -> Core.Lambda -> (JavaEnvironment.JavaEnvironment -> t0) -> t0-withLambda env lam k =-    Environment.withLambdaContext javaEnvGetGraph javaEnvSetGraph env lam (\env1 ->-      let aliases = JavaEnvironment.javaEnvironmentAliases env1-          aliases2 =-                  JavaEnvironment.Aliases {-                    JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),-                    JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),-                    JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases),-                    JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases),-                    JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),-                    JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),-                    JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases),-                    JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),-                    JavaEnvironment.aliasesLambdaVars = (Sets.insert (Core.lambdaParameter lam) (JavaEnvironment.aliasesLambdaVars aliases)),-                    JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),-                    JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),-                    JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases),-                    JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases)}-          env2 =-                  JavaEnvironment.JavaEnvironment {-                    JavaEnvironment.javaEnvironmentAliases = aliases2,-                    JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env1)}-      in (k env2))--withTypeLambda :: JavaEnvironment.JavaEnvironment -> Core.TypeLambda -> (JavaEnvironment.JavaEnvironment -> t0) -> t0-withTypeLambda = Environment.withTypeLambdaContext javaEnvGetGraph javaEnvSetGraph--wrapInSupplierLambda :: Syntax.Expression -> Syntax.Expression-wrapInSupplierLambda expr =-    Syntax.ExpressionLambda (Syntax.LambdaExpression {-      Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),-      Syntax.lambdaExpressionBody = (Syntax.LambdaBodyExpression expr)})--wrapLazyArguments :: Graph.Graph -> Core.Name -> [Syntax.Expression] -> ([Syntax.Expression], (Maybe String))-wrapLazyArguments g name args =--      let lazyFlags = lazyFlagsForPrimitive g name-          anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags-      in (Logic.ifElse (Logic.and anyLazy (Equality.equal (Lists.length args) (Lists.length lazyFlags))) (-        Lists.map (\pair -> Logic.ifElse (Pairs.second pair) (wrapInSupplierLambda (Pairs.first pair)) (Pairs.first pair)) (Lists.zip args lazyFlags),-        (Just (Logic.ifElse (Equality.equal name (Core.Name "hydra.lib.logic.ifElse")) "lazy" "applyLazy"))) (args, Nothing))+import qualified Hydra.Core.Analysis as Analysis+import qualified Hydra.Core.Annotations as Annotations+import qualified Hydra.Core.Arity as Arity+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Checking as Checking+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Decode.Model as DecodeModel+import qualified Hydra.Core.Dependencies as Dependencies+import qualified Hydra.Core.Encode.Model as EncodeModel+import qualified Hydra.Core.Environment as CoreEnvironment+import qualified Hydra.Core.Error.Checking as ErrorChecking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Inference as Inference+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as CoreNames+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Predicates as Predicates+import qualified Hydra.Core.Print.Model as PrintModel+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Refs as Refs+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Resolution as Resolution+import qualified Hydra.Core.Rewriting as Rewriting+import qualified Hydra.Core.Scoping as Scoping+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Sorting as Sorting+import qualified Hydra.Core.Strip as Strip+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variables as Variables+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Java.Environment as JavaEnvironment+import qualified Hydra.Java.Language as Language+import qualified Hydra.Java.Names as JavaNames+import qualified Hydra.Java.Serde as Serde+import qualified Hydra.Java.Syntax as Syntax+import qualified Hydra.Java.Utils as Utils+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Map as M+import qualified Data.Set as S++-- | Attach comments derived from a field's annotations to a class body declaration+addComment :: Syntax.ClassBodyDeclaration -> Model.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+addComment decl field cx g =+    Eithers.map (\c -> Syntax.ClassBodyDeclarationWithComments {+      Syntax.classBodyDeclarationWithCommentsValue = decl,+      Syntax.classBodyDeclarationWithCommentsComments = c}) (Annotations.commentsFromFieldType cx g field)++analyzeJavaFunction :: JavaEnvironment.JavaEnvironment -> Model.Term -> Typing.InferenceContext -> t0 -> Either t1 (Typing.FunctionStructure JavaEnvironment.JavaEnvironment)+analyzeJavaFunction env term cx g = Analysis.analyzeFunctionTerm cx javaEnvGetGraph javaEnvSetGraph env term++annotateBodyWithCod :: Model.Type -> Model.Term -> Model.Term+annotateBodyWithCod typ term =++      let setAnn = \t -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ typ)) t+      in case (Strip.deannotateTerm term) of+        Model.TermTypeApplication _ -> setAnn term+        Model.TermApplication v0 ->+          let lhs = Model.applicationFunction v0+              rhs = Model.applicationArgument v0+              annotatedRhs =+                      case (Strip.deannotateTerm rhs) of+                        Model.TermTypeApplication _ -> annotateBodyWithCod (extractArgType lhs typ) rhs+                        _ -> rhs+          in (setAnn (Model.TermApplication (Model.Application {+            Model.applicationFunction = lhs,+            Model.applicationArgument = annotatedRhs})))+        _ -> setAnn term++annotateLambdaArgs :: Model.Name -> [Model.Type] -> [Model.Term] -> t0 -> Graph.Graph -> Either t1 [Model.Term]+annotateLambdaArgs cname tApps argTerms cx g =+    Logic.ifElse (Lists.isEmpty tApps) (Right argTerms) (Eithers.bind (Eithers.bind (Right (Lexical.lookupBinding g cname)) (\mel -> Optionals.match mel (Right (Optionals.map (\prim -> Scoping.termSignatureToTypeScheme (Packaging.primitiveDefinitionSignature (Graph.primitiveDefinition prim))) (Maps.lookup cname (Graph.graphPrimitives g)))) (\el -> Right (Model.bindingTypeScheme el)))) (\mts -> Optionals.match mts (Right argTerms) (\ts ->+      let schemeType = Model.typeSchemeBody ts+          schemeTypeVars = collectTypeVars schemeType+          schemeVars = Lists.filter (\v -> Sets.member v schemeTypeVars) (Model.typeSchemeVariables ts)+      in (Logic.ifElse (Logic.or (Lists.isEmpty schemeVars) (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length tApps)))) (Right argTerms) (+        let subst = Maps.fromList (Lists.zip schemeVars tApps)+            expectedTypes = peelExpectedTypes subst (Lists.length argTerms) schemeType+        in (Right (Lists.zipWith (\arg -> \mExpected -> propagateType mExpected arg) argTerms (Lists.concat2 expectedTypes (Lists.replicate (Lists.length argTerms) (Model.TypeVariable (Model.Name "unused")))))))))))++applyCastIfSafe :: JavaEnvironment.Aliases -> Model.Type -> Syntax.Expression -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+applyCastIfSafe aliases castType expr cx g =++      let trusted = JavaEnvironment.aliasesTrustedTypeVars aliases+          inScope = JavaEnvironment.aliasesInScopeTypeParams aliases+          castVars = collectTypeVars castType+          javaTypeVars =+                  Sets.fromList (Lists.filter (\v -> Logic.or (Sets.member v inScope) (isLambdaBoundVariable v)) (Sets.toList castVars))+          isSafe =+                  Logic.or (Sets.isEmpty trusted) (Logic.or (Sets.isEmpty javaTypeVars) (Sets.isEmpty (Sets.difference javaTypeVars trusted)))+      in (Logic.ifElse isSafe (Eithers.bind (encodeType aliases Sets.empty castType cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression expr)))))) (Right expr))++applyJavaArg :: Syntax.Expression -> Syntax.Expression -> Syntax.Expression+applyJavaArg expr jarg =+    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right (Utils.javaExpressionToJavaPrimary expr))) (Syntax.Identifier JavaNames.applyMethodName) [+      jarg])++applyOvergenSubstToTermAnnotations :: M.Map Model.Name Model.Type -> Model.Term -> t0 -> Graph.Graph -> Either t1 Model.Term+applyOvergenSubstToTermAnnotations subst term0 cx g = Right (applyOvergenSubstToTermAnnotationsGo subst g term0)++applyOvergenSubstToTermAnnotationsGo :: M.Map Model.Name Model.Type -> Graph.Graph -> Model.Term -> Model.Term+applyOvergenSubstToTermAnnotationsGo subst cx term =+    case term of+      Model.TermAnnotated v0 ->+        let inner = Model.annotatedTermBody v0+            ann = Annotations.getAnnotationMap (Model.annotatedTermAnnotation v0)+            ann_ =+                    Optionals.match (Maps.lookup Constants.keyType ann) ann (\typeTerm -> Eithers.either (\_ -> ann) (\t ->+                      let t_ = substituteTypeVarsWithTypes subst t+                      in (Maps.insert Constants.keyType (EncodeModel.type_ t_) ann)) (DecodeModel.type_ cx typeTerm))+        in (Model.TermAnnotated (Model.AnnotatedTerm {+          Model.annotatedTermBody = (applyOvergenSubstToTermAnnotationsGo subst cx inner),+          Model.annotatedTermAnnotation = (Annotations.wrapAnnotationMap ann_)}))+      Model.TermApplication v0 -> Model.TermApplication (Model.Application {+        Model.applicationFunction = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.applicationFunction v0)),+        Model.applicationArgument = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.applicationArgument v0))})+      Model.TermLambda v0 -> Model.TermLambda (Model.Lambda {+        Model.lambdaParameter = (Model.lambdaParameter v0),+        Model.lambdaDomain = (Optionals.map (\d -> substituteTypeVarsWithTypes subst d) (Model.lambdaDomain v0)),+        Model.lambdaBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.lambdaBody v0))})+      Model.TermCases v0 -> Model.TermCases (Model.CaseStatement {+        Model.caseStatementTypeName = (Model.caseStatementTypeName v0),+        Model.caseStatementDefault = (Optionals.map (\d -> applyOvergenSubstToTermAnnotationsGo subst cx d) (Model.caseStatementDefault v0)),+        Model.caseStatementCases = (Lists.map (\fld -> Model.CaseAlternative {+          Model.caseAlternativeName = (Model.caseAlternativeName fld),+          Model.caseAlternativeHandler = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.caseAlternativeHandler fld))}) (Model.caseStatementCases v0))})+      Model.TermLet v0 -> Model.TermLet (Model.Let {+        Model.letBindings = (Lists.map (\b -> Model.Binding {+          Model.bindingName = (Model.bindingName b),+          Model.bindingTerm = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.bindingTerm b)),+          Model.bindingTypeScheme = (Model.bindingTypeScheme b)}) (Model.letBindings v0)),+        Model.letBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.letBody v0))})+      Model.TermTypeApplication v0 -> Model.TermTypeApplication (Model.TypeApplicationTerm {+        Model.typeApplicationTermBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.typeApplicationTermBody v0)),+        Model.typeApplicationTermType = (substituteTypeVarsWithTypes subst (Model.typeApplicationTermType v0))})+      Model.TermTypeLambda v0 -> Model.TermTypeLambda (Model.TypeLambda {+        Model.typeLambdaParameter = (Model.typeLambdaParameter v0),+        Model.typeLambdaBody = (applyOvergenSubstToTermAnnotationsGo subst cx (Model.typeLambdaBody v0))})+      _ -> term++applySubstFull :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type+applySubstFull s t =+    case (Strip.deannotateType t) of+      Model.TypeVariable v0 -> Maps.findWithDefault t v0 s+      Model.TypeFunction v0 -> Model.TypeFunction (Model.FunctionType {+        Model.functionTypeDomain = (applySubstFull s (Model.functionTypeDomain v0)),+        Model.functionTypeCodomain = (applySubstFull s (Model.functionTypeCodomain v0))})+      Model.TypeApplication v0 -> Model.TypeApplication (Model.ApplicationType {+        Model.applicationTypeFunction = (applySubstFull s (Model.applicationTypeFunction v0)),+        Model.applicationTypeArgument = (applySubstFull s (Model.applicationTypeArgument v0))})+      Model.TypeList v0 -> Model.TypeList (applySubstFull s v0)+      Model.TypeSet v0 -> Model.TypeSet (applySubstFull s v0)+      Model.TypeOptional v0 -> Model.TypeOptional (applySubstFull s v0)+      Model.TypeEffect v0 -> Model.TypeEffect (applySubstFull s v0)+      Model.TypeMap v0 -> Model.TypeMap (Model.MapType {+        Model.mapTypeKeys = (applySubstFull s (Model.mapTypeKeys v0)),+        Model.mapTypeValues = (applySubstFull s (Model.mapTypeValues v0))})+      Model.TypePair v0 -> Model.TypePair (Model.PairType {+        Model.pairTypeFirst = (applySubstFull s (Model.pairTypeFirst v0)),+        Model.pairTypeSecond = (applySubstFull s (Model.pairTypeSecond v0))})+      Model.TypeEither v0 -> Model.TypeEither (Model.EitherType {+        Model.eitherTypeLeft = (applySubstFull s (Model.eitherTypeLeft v0)),+        Model.eitherTypeRight = (applySubstFull s (Model.eitherTypeRight v0))})+      Model.TypeForall v0 -> Model.TypeForall (Model.ForallType {+        Model.forallTypeParameter = (Model.forallTypeParameter v0),+        Model.forallTypeBody = (applySubstFull (Maps.delete (Model.forallTypeParameter v0) s) (Model.forallTypeBody v0))})+      _ -> t++applySubstSimple :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type+applySubstSimple subst t =+    case (Strip.deannotateType t) of+      Model.TypeVariable v0 -> Maps.findWithDefault t v0 subst+      _ -> t++arraysCompareExpr :: String -> String -> Syntax.Expression+arraysCompareExpr otherVar fname =++      let header =+              Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Arrays"))),+                Syntax.methodInvocation_ComplexTypeArguments = [],+                Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})+          arg1 =+                  Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {+                    Syntax.expressionNameQualifier = Nothing,+                    Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fname))})+          arg2 =+                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))+      in (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+        Syntax.methodInvocationHeader = header,+        Syntax.methodInvocationArguments = [+          arg1,+          arg2]}))++arraysEqualsClause :: String -> String -> Syntax.InclusiveOrExpression+arraysEqualsClause tmpName fname =++      let thisArg =+              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))+          otherArg =+                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))+          header =+                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                    Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Arrays"))),+                    Syntax.methodInvocation_ComplexTypeArguments = [],+                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.equalsMethodName)})+      in (Utils.javaPostfixExpressionToJavaInclusiveOrExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {+        Syntax.methodInvocationHeader = header,+        Syntax.methodInvocationArguments = [+          thisArg,+          otherArg]})))++augmentVariantClass :: JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> Syntax.ClassDeclaration -> Syntax.ClassDeclaration+augmentVariantClass aliases tparams elName cd =+    case cd of+      Syntax.ClassDeclarationNormal v0 ->+        let args = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams+            extendsPart = Utils.nameToJavaClassType aliases True args elName Nothing+            newMods =+                    [+                      Syntax.ClassModifierPublic,+                      Syntax.ClassModifierStatic,+                      Syntax.ClassModifierFinal]+            oldBody = Syntax.normalClassDeclarationBody v0+            oldDecls = Syntax.unClassBody oldBody+            acceptDecl = withCommentString "Dispatch to {@code visitor}." (Utils.toAcceptMethod False tparams)+            newBody = Syntax.ClassBody (Lists.concat2 oldDecls [+                  acceptDecl])+        in (Syntax.ClassDeclarationNormal (Syntax.NormalClassDeclaration {+          Syntax.normalClassDeclarationModifiers = newMods,+          Syntax.normalClassDeclarationIdentifier = (Syntax.normalClassDeclarationIdentifier v0),+          Syntax.normalClassDeclarationParameters = tparams,+          Syntax.normalClassDeclarationExtends = (Just extendsPart),+          Syntax.normalClassDeclarationImplements = (Syntax.normalClassDeclarationImplements v0),+          Syntax.normalClassDeclarationPermits = (Syntax.normalClassDeclarationPermits v0),+          Syntax.normalClassDeclarationBody = newBody}))+      _ -> cd++bindingIsFunctionType :: Model.Binding -> Bool+bindingIsFunctionType b =+    Optionals.match (Model.bindingTypeScheme b) (case (Strip.deannotateTerm (Model.bindingTerm b)) of+      Model.TermLambda _ -> True+      Model.TermProject _ -> True+      Model.TermCases _ -> True+      Model.TermUnwrap _ -> True+      _ -> False) (\ts -> case (Strip.deannotateType (Model.typeSchemeBody ts)) of+      Model.TypeFunction _ -> True+      Model.TypeForall v0 -> case (Strip.deannotateType (Model.forallTypeBody v0)) of+        Model.TypeFunction _ -> True+        _ -> False+      _ -> False)++bindingNameToFilePath :: Model.Name -> String+bindingNameToFilePath name =++      let qn = CoreNames.qualifyName name+          ns_ = Util.qualifiedNameModuleName qn+          local = Util.qualifiedNameLocal qn+          sanitized = Formatting.sanitizeWithUnderscores Language.reservedWords local+          unq =+                  CoreNames.unqualifyName (Util.QualifiedName {+                    Util.qualifiedNameModuleName = ns_,+                    Util.qualifiedNameLocal = sanitized})+      in (CoreNames.nameToFilePath Util.CaseConventionCamel Util.CaseConventionPascal (File.FileExtension "java") unq)++bindingsToStatements :: JavaEnvironment.JavaEnvironment -> [Model.Binding] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error ([Syntax.BlockStatement], JavaEnvironment.JavaEnvironment)+bindingsToStatements env bindings cx g0 =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          g = JavaEnvironment.javaEnvironmentGraph env+          flatBindings = dedupBindings (JavaEnvironment.aliasesInScopeJavaVars aliases) (flattenBindings bindings)+          gExtended =+                  Scoping.extendGraphForLet (\g1 -> \b -> Logic.ifElse (Predicates.isComplexBinding g1 b) (Just (Model.TermLiteral (Model.LiteralBoolean True))) Nothing) g (Model.Let {+                    Model.letBindings = flatBindings,+                    Model.letBody = (Model.TermVariable (Model.Name "dummy"))})+          bindingVars = Sets.fromList (Lists.map (\b -> Model.bindingName b) flatBindings)+          allDeps =+                  Maps.fromList (Lists.map (\b ->+                    let key = Model.bindingName b+                        deps = Sets.intersection bindingVars (Variables.freeVariablesInTerm (Model.bindingTerm b))+                    in (key, deps)) flatBindings)+          sorted =+                  Sorting.topologicalSortComponents (Lists.map (\entry ->+                    let key = Pairs.first entry+                        deps = Pairs.second entry+                    in (key, (Sets.toList deps))) (Maps.toList allDeps))+          recursiveVars =+                  Sets.fromList (Lists.concat (Lists.map (\names -> Logic.ifElse (Equality.equal (Lists.length names) 1) (Optionals.match (Lists.head names) [] (\singleName -> Optionals.match (Maps.lookup singleName allDeps) [] (\deps -> Logic.ifElse (Sets.member singleName deps) [+                    singleName] []))) names) sorted))+          thunkedVars =+                  Sets.fromList (Lists.concat (Lists.map (\b ->+                    let bname = Model.bindingName b+                    in (Logic.ifElse (Logic.and (Logic.not (Sets.member bname recursiveVars)) (Logic.and (Logic.and (Predicates.isComplexBinding g b) (Logic.not (Predicates.isTrivialTerm (Model.bindingTerm b)))) (Logic.not (bindingIsFunctionType b)))) [+                      bname] [])) flatBindings))+          aliasesExtended =+                  JavaEnvironment.Aliases {+                    JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),+                    JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),+                    JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases),+                    JavaEnvironment.aliasesRecursiveVars = (Sets.union (JavaEnvironment.aliasesRecursiveVars aliases) recursiveVars),+                    JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),+                    JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),+                    JavaEnvironment.aliasesInScopeJavaVars = (Sets.union (JavaEnvironment.aliasesInScopeJavaVars aliases) bindingVars),+                    JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),+                    JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases),+                    JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),+                    JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),+                    JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases),+                    JavaEnvironment.aliasesThunkedVars = (Sets.union (JavaEnvironment.aliasesThunkedVars aliases) thunkedVars)}+          envExtended =+                  JavaEnvironment.JavaEnvironment {+                    JavaEnvironment.javaEnvironmentAliases = aliasesExtended,+                    JavaEnvironment.javaEnvironmentGraph = gExtended}+      in (Logic.ifElse (Lists.isEmpty bindings) (Right ([], envExtended)) (Eithers.bind (Eithers.mapList (\names -> Eithers.bind (Eithers.mapList (\n -> toDeclInit aliasesExtended gExtended recursiveVars flatBindings n cx g) names) (\inits -> Eithers.bind (Eithers.mapList (\n -> toDeclStatement envExtended aliasesExtended gExtended recursiveVars thunkedVars flatBindings n cx g) names) (\decls -> Right (Lists.concat2 (Optionals.givens inits) decls)))) sorted) (\groups -> Right (Lists.concat groups, envExtended))))++boundTypeVariables :: Model.Type -> [Model.Name]+boundTypeVariables typ =+    case typ of+      Model.TypeAnnotated v0 -> boundTypeVariables (Model.annotatedTypeBody v0)+      Model.TypeForall v0 -> Lists.cons (Model.forallTypeParameter v0) (boundTypeVariables (Model.forallTypeBody v0))+      _ -> []++buildArgSubst :: S.Set Model.Name -> [Model.Type] -> [t0] -> M.Map Model.Name t0+buildArgSubst schemeVarSet schemeDoms argTypes =+    Maps.fromList (Lists.bind (Lists.zip schemeDoms argTypes) (\p ->+      let sdom = Pairs.first p+          argType = Pairs.second p+      in case (Strip.deannotateType sdom) of+        Model.TypeVariable v0 -> Logic.ifElse (Sets.member v0 schemeVarSet) [+          (v0, argType)] []+        _ -> []))++buildCurriedLambda :: [Model.Name] -> Syntax.Expression -> Syntax.Expression+buildCurriedLambda params inner = Lists.foldl (\acc -> \p -> Utils.javaLambda p acc) inner (Lists.reverse params)++buildSubstFromAnnotations :: S.Set Model.Name -> Model.Term -> t0 -> Graph.Graph -> Either t1 (M.Map Model.Name Model.Name)+buildSubstFromAnnotations schemeVarSet term cx g = Right (buildSubstFromAnnotations_go schemeVarSet g term)++buildSubstFromAnnotations_go :: S.Set Model.Name -> Graph.Graph -> Model.Term -> M.Map Model.Name Model.Name+buildSubstFromAnnotations_go schemeVarSet g term =+    case term of+      Model.TermAnnotated v0 ->+        let body = Model.annotatedTermBody v0+            anns = Annotations.getAnnotationMap (Model.annotatedTermAnnotation v0)+            bodySubst = buildSubstFromAnnotations_go schemeVarSet g body+            annSubst =+                    Optionals.match (Maps.lookup Constants.keyType anns) Maps.empty (\typeTerm -> Eithers.either (\_ -> Maps.empty) (\annType -> case (Strip.deannotateTerm body) of+                      Model.TermLambda v1 -> Optionals.match (Model.lambdaDomain v1) Maps.empty (\dom -> case (Strip.deannotateType annType) of+                        Model.TypeFunction v2 -> buildTypeVarSubst schemeVarSet (Model.functionTypeDomain v2) dom+                        _ -> Maps.empty)+                      _ -> Maps.empty) (DecodeModel.type_ g typeTerm))+        in (Maps.union annSubst bodySubst)+      Model.TermApplication v0 -> Maps.union (buildSubstFromAnnotations_go schemeVarSet g (Model.applicationFunction v0)) (buildSubstFromAnnotations_go schemeVarSet g (Model.applicationArgument v0))+      Model.TermLambda v0 -> buildSubstFromAnnotations_go schemeVarSet g (Model.lambdaBody v0)+      Model.TermCases v0 ->+        let defSubst = Optionals.match (Model.caseStatementDefault v0) Maps.empty (\d -> buildSubstFromAnnotations_go schemeVarSet g d)+            caseSubsts =+                    Lists.foldl (\acc -> \fld -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Model.caseAlternativeHandler fld))) Maps.empty (Model.caseStatementCases v0)+        in (Maps.union defSubst caseSubsts)+      Model.TermLet v0 ->+        let bindingSubst =+                Lists.foldl (\acc -> \b -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Model.bindingTerm b))) Maps.empty (Model.letBindings v0)+        in (Maps.union bindingSubst (buildSubstFromAnnotations_go schemeVarSet g (Model.letBody v0)))+      Model.TermList v0 -> Lists.foldl (\acc -> \t -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g t)) Maps.empty v0+      Model.TermOptional v0 -> Optionals.match v0 Maps.empty (\t -> buildSubstFromAnnotations_go schemeVarSet g t)+      Model.TermPair v0 -> Maps.union (buildSubstFromAnnotations_go schemeVarSet g (Pairs.first v0)) (buildSubstFromAnnotations_go schemeVarSet g (Pairs.second v0))+      Model.TermRecord v0 -> Lists.foldl (\acc -> \fld -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g (Model.fieldTerm fld))) Maps.empty (Model.recordFields v0)+      Model.TermSet v0 -> Lists.foldl (\acc -> \t -> Maps.union acc (buildSubstFromAnnotations_go schemeVarSet g t)) Maps.empty (Sets.toList v0)+      Model.TermTypeApplication v0 -> buildSubstFromAnnotations_go schemeVarSet g (Model.typeApplicationTermBody v0)+      Model.TermTypeLambda v0 -> buildSubstFromAnnotations_go schemeVarSet g (Model.typeLambdaBody v0)+      Model.TermEither v0 -> Eithers.either (\t -> buildSubstFromAnnotations_go schemeVarSet g t) (\t -> buildSubstFromAnnotations_go schemeVarSet g t) v0+      _ -> Maps.empty++buildTypeSubst :: S.Set Model.Name -> Model.Type -> Model.Type -> M.Map Model.Name Model.Type+buildTypeSubst schemeVarSet schemeType actualType =+    buildTypeSubst_go schemeVarSet (Strip.deannotateType schemeType) (Strip.deannotateType actualType)++buildTypeSubst_go :: S.Set Model.Name -> Model.Type -> Model.Type -> M.Map Model.Name Model.Type+buildTypeSubst_go svs st at =++      let goSub = \a -> \b -> buildTypeSubst_go svs (Strip.deannotateType a) (Strip.deannotateType b)+      in case st of+        Model.TypeVariable v0 -> Logic.ifElse (Sets.member v0 svs) (Maps.singleton v0 at) Maps.empty+        Model.TypeFunction v0 -> case at of+          Model.TypeFunction v1 -> Maps.union (goSub (Model.functionTypeDomain v0) (Model.functionTypeDomain v1)) (goSub (Model.functionTypeCodomain v0) (Model.functionTypeCodomain v1))+          _ -> Maps.empty+        Model.TypeApplication v0 -> case at of+          Model.TypeApplication v1 -> Maps.union (goSub (Model.applicationTypeFunction v0) (Model.applicationTypeFunction v1)) (goSub (Model.applicationTypeArgument v0) (Model.applicationTypeArgument v1))+          _ -> Maps.empty+        Model.TypeList v0 -> case at of+          Model.TypeList v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeSet v0 -> case at of+          Model.TypeSet v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeOptional v0 -> case at of+          Model.TypeOptional v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeMap v0 -> case at of+          Model.TypeMap v1 -> Maps.union (goSub (Model.mapTypeKeys v0) (Model.mapTypeKeys v1)) (goSub (Model.mapTypeValues v0) (Model.mapTypeValues v1))+          _ -> Maps.empty+        Model.TypePair v0 -> case at of+          Model.TypePair v1 -> Maps.union (goSub (Model.pairTypeFirst v0) (Model.pairTypeFirst v1)) (goSub (Model.pairTypeSecond v0) (Model.pairTypeSecond v1))+          _ -> Maps.empty+        Model.TypeEither v0 -> case at of+          Model.TypeEither v1 -> Maps.union (goSub (Model.eitherTypeLeft v0) (Model.eitherTypeLeft v1)) (goSub (Model.eitherTypeRight v0) (Model.eitherTypeRight v1))+          _ -> Maps.empty+        Model.TypeForall v0 -> case at of+          Model.TypeForall v1 -> goSub (Model.forallTypeBody v0) (Model.forallTypeBody v1)+          _ -> goSub (Model.forallTypeBody v0) at+        _ -> Maps.empty++buildTypeVarSubst :: S.Set Model.Name -> Model.Type -> Model.Type -> M.Map Model.Name Model.Name+buildTypeVarSubst schemeVarSet freshTyp canonTyp =+    buildTypeVarSubst_go schemeVarSet (Strip.deannotateType freshTyp) (Strip.deannotateType canonTyp)++buildTypeVarSubst_go :: S.Set Model.Name -> Model.Type -> Model.Type -> M.Map Model.Name Model.Name+buildTypeVarSubst_go svs ft ct =++      let goSub = \a -> \b -> buildTypeVarSubst_go svs (Strip.deannotateType a) (Strip.deannotateType b)+      in case ft of+        Model.TypeVariable v0 -> case ct of+          Model.TypeVariable v1 -> Logic.ifElse (Logic.and (Logic.not (Equality.equal v0 v1)) (Sets.member v1 svs)) (Maps.singleton v0 v1) Maps.empty+          _ -> Maps.empty+        Model.TypeFunction v0 -> case ct of+          Model.TypeFunction v1 -> Maps.union (goSub (Model.functionTypeDomain v0) (Model.functionTypeDomain v1)) (goSub (Model.functionTypeCodomain v0) (Model.functionTypeCodomain v1))+          _ -> Maps.empty+        Model.TypeApplication v0 -> case ct of+          Model.TypeApplication v1 -> Maps.union (goSub (Model.applicationTypeFunction v0) (Model.applicationTypeFunction v1)) (goSub (Model.applicationTypeArgument v0) (Model.applicationTypeArgument v1))+          _ -> Maps.empty+        Model.TypeList v0 -> case ct of+          Model.TypeList v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeSet v0 -> case ct of+          Model.TypeSet v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeOptional v0 -> case ct of+          Model.TypeOptional v1 -> goSub v0 v1+          _ -> Maps.empty+        Model.TypeMap v0 -> case ct of+          Model.TypeMap v1 -> Maps.union (goSub (Model.mapTypeKeys v0) (Model.mapTypeKeys v1)) (goSub (Model.mapTypeValues v0) (Model.mapTypeValues v1))+          _ -> Maps.empty+        Model.TypePair v0 -> case ct of+          Model.TypePair v1 -> Maps.union (goSub (Model.pairTypeFirst v0) (Model.pairTypeFirst v1)) (goSub (Model.pairTypeSecond v0) (Model.pairTypeSecond v1))+          _ -> Maps.empty+        Model.TypeEither v0 -> case ct of+          Model.TypeEither v1 -> Maps.union (goSub (Model.eitherTypeLeft v0) (Model.eitherTypeLeft v1)) (goSub (Model.eitherTypeRight v0) (Model.eitherTypeRight v1))+          _ -> Maps.empty+        Model.TypeForall v0 -> case ct of+          Model.TypeForall v1 -> goSub (Model.forallTypeBody v0) (Model.forallTypeBody v1)+          _ -> buildTypeVarSubst_go svs (Strip.deannotateType (Model.forallTypeBody v0)) ct+        _ -> case ct of+          Model.TypeForall v0 -> buildTypeVarSubst_go svs ft (Strip.deannotateType (Model.forallTypeBody v0))+          _ -> Maps.empty++builderSetterName :: Model.Name -> String+builderSetterName fname =++      let base = Utils.sanitizeJavaName (Model.unName fname)+      in (Logic.ifElse (Logic.or (Equality.equal base "build") (Equality.equal base "builder")) (Strings.concat2 base "_") base)++classModsPublic :: [Syntax.ClassModifier]+classModsPublic = [+  Syntax.ClassModifierPublic]++classifyDataReference :: Model.Name -> t0 -> Graph.Graph -> Either Errors.Error JavaEnvironment.JavaSymbolClass+classifyDataReference name cx g =+    Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right JavaEnvironment.JavaSymbolClassLocalVariable) (\el -> Optionals.match (Model.bindingTypeScheme el) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "no type scheme for element " (Model.unName (Model.bindingName el)))))) (\ts -> Right (classifyDataTerm ts (Model.bindingTerm el)))))++classifyDataTerm :: Model.TypeScheme -> Model.Term -> JavaEnvironment.JavaSymbolClass+classifyDataTerm ts term =+    Logic.ifElse (Dependencies.isLambda term) (+      let n = classifyDataTerm_countLambdaParams term+      in (Logic.ifElse (Ordering.gt n 1) (JavaEnvironment.JavaSymbolClassHoistedLambda n) JavaEnvironment.JavaSymbolClassUnaryFunction)) (+      let hasTypeParams = Logic.not (Lists.isEmpty (Model.typeSchemeVariables ts))+      in (Logic.ifElse hasTypeParams (+        let n2 = classifyDataTerm_countLambdaParams (classifyDataTerm_stripTypeLambdas term)+        in (Logic.ifElse (Ordering.gt n2 0) (JavaEnvironment.JavaSymbolClassHoistedLambda n2) JavaEnvironment.JavaSymbolClassNullaryFunction)) JavaEnvironment.JavaSymbolClassNullaryFunction))++classifyDataTerm_countLambdaParams :: Model.Term -> Int+classifyDataTerm_countLambdaParams t =+    case (Strip.deannotateTerm t) of+      Model.TermLambda v0 -> Math.add 1 (classifyDataTerm_countLambdaParams (Model.lambdaBody v0))+      Model.TermLet v0 -> classifyDataTerm_countLambdaParams (Model.letBody v0)+      _ -> 0++classifyDataTerm_stripTypeLambdas :: Model.Term -> Model.Term+classifyDataTerm_stripTypeLambdas t =+    case (Strip.deannotateTerm t) of+      Model.TermTypeLambda v0 -> classifyDataTerm_stripTypeLambdas (Model.typeLambdaBody v0)+      _ -> t++cmpDeclStatement :: t0 -> Syntax.BlockStatement+cmpDeclStatement aliases =+    Utils.variableDeclarationStatement aliases Utils.javaIntType (Utils.javaIdentifier "cmp") (Utils.javaIntExpression 0)++cmpNotZeroExpr :: Syntax.Expression+cmpNotZeroExpr =+    Utils.javaEqualityExpressionToJavaExpression (Syntax.EqualityExpressionNotEqual (Syntax.EqualityExpression_Binary {+      Syntax.equalityExpression_BinaryLhs = lhs,+      Syntax.equalityExpression_BinaryRhs = rhs}))+  where+    lhs =+        Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionName (Syntax.ExpressionName {+          Syntax.expressionNameQualifier = Nothing,+          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")})))+    rhs =+        Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))++collectForallParams :: Model.Type -> [Model.Name]+collectForallParams t =+    case (Strip.deannotateType t) of+      Model.TypeForall v0 -> Lists.cons (Model.forallTypeParameter v0) (collectForallParams (Model.forallTypeBody v0))+      _ -> []++collectLambdaDomains :: Model.Term -> ([Model.Type], Model.Term)+collectLambdaDomains t =+    case (Strip.deannotateTerm t) of+      Model.TermLambda v0 -> Optionals.match (Model.lambdaDomain v0) ([], t) (\dom ->+        let rest = collectLambdaDomains (Model.lambdaBody v0)+        in (Lists.cons dom (Pairs.first rest), (Pairs.second rest)))+      _ -> ([], t)++collectTypeApps :: Model.Term -> [Model.Type] -> (Model.Term, [Model.Type])+collectTypeApps t acc =+    case (Strip.deannotateTerm t) of+      Model.TermTypeApplication v0 -> collectTypeApps (Model.typeApplicationTermBody v0) (Lists.cons (Model.typeApplicationTermType v0) acc)+      _ -> (Strip.deannotateTerm t, acc)++collectTypeApps0 :: Model.Term -> [Model.Type] -> (Model.Term, [Model.Type])+collectTypeApps0 t acc =+    case (Strip.deannotateTerm t) of+      Model.TermTypeApplication v0 -> collectTypeApps0 (Model.typeApplicationTermBody v0) (Lists.cons (Model.typeApplicationTermType v0) acc)+      _ -> (t, acc)++collectTypeVars :: Model.Type -> S.Set Model.Name+collectTypeVars typ = collectTypeVars_go (Strip.deannotateType typ)++collectTypeVars_go :: Model.Type -> S.Set Model.Name+collectTypeVars_go t =+    case t of+      Model.TypeVariable v0 -> Sets.singleton v0+      Model.TypeFunction v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Model.functionTypeDomain v0))) (collectTypeVars_go (Strip.deannotateType (Model.functionTypeCodomain v0)))+      Model.TypeApplication v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Model.applicationTypeFunction v0))) (collectTypeVars_go (Strip.deannotateType (Model.applicationTypeArgument v0)))+      Model.TypeList v0 -> collectTypeVars_go (Strip.deannotateType v0)+      Model.TypeSet v0 -> collectTypeVars_go (Strip.deannotateType v0)+      Model.TypeOptional v0 -> collectTypeVars_go (Strip.deannotateType v0)+      Model.TypeEffect v0 -> collectTypeVars_go (Strip.deannotateType v0)+      Model.TypeMap v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Model.mapTypeKeys v0))) (collectTypeVars_go (Strip.deannotateType (Model.mapTypeValues v0)))+      Model.TypePair v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Model.pairTypeFirst v0))) (collectTypeVars_go (Strip.deannotateType (Model.pairTypeSecond v0)))+      Model.TypeEither v0 -> Sets.union (collectTypeVars_go (Strip.deannotateType (Model.eitherTypeLeft v0))) (collectTypeVars_go (Strip.deannotateType (Model.eitherTypeRight v0)))+      Model.TypeForall v0 -> collectTypeVars_go (Strip.deannotateType (Model.forallTypeBody v0))+      _ -> Sets.empty++collectionTypeArgs :: String -> Int -> JavaEnvironment.Aliases -> [M.Map Model.Name Model.Term] -> [Syntax.Type] -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]+collectionTypeArgs label n aliases anns tyapps cx g =+    Logic.ifElse (Logic.not (Lists.isEmpty tyapps)) (takeTypeArgs label n tyapps cx g) (+      let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Eithers.bind (Optionals.match mtyp (Right []) (\typ -> case (Strip.deannotateType typ) of+        Model.TypeList v0 -> Right [+          v0]+        Model.TypeSet v0 -> Right [+          v0]+        Model.TypeOptional v0 -> Right [+          v0]+        Model.TypeMap v0 -> Right [+          Model.mapTypeKeys v0,+          (Model.mapTypeValues v0)]+        _ -> Right [])) (\compTypes -> Eithers.mapList (\ct -> Eithers.bind (encodeType aliases Sets.empty ct cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) compTypes))))++comparableCompareExpr :: String -> String -> Syntax.Expression+comparableCompareExpr otherVar fname =++      let thisField = Utils.javaIdentifierToJavaExpression (Syntax.Identifier (Utils.sanitizeJavaName fname))+          otherField =+                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))+      in (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.Comparing") (Syntax.Identifier "compare") [+        thisField,+        otherField]))++compareAndReturnStmts :: String -> Model.FieldType -> [Syntax.BlockStatement]+compareAndReturnStmts otherVar f =+    [+      Syntax.BlockStatementStatement (Utils.javaAssignmentStatement (Syntax.LeftHandSideExpressionName (Syntax.ExpressionName {+        Syntax.expressionNameQualifier = Nothing,+        Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")})) (compareFieldExpr otherVar f)),+      (Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {+        Syntax.ifThenStatementExpression = cmpNotZeroExpr,+        Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {+          Syntax.expressionNameQualifier = Nothing,+          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "cmp")}))))})))]++compareFieldExpr :: String -> Model.FieldType -> Syntax.Expression+compareFieldExpr otherVar ft =++      let fname = Model.unName (Model.fieldTypeName ft)+          ftype = Model.fieldTypeType ft+      in (Logic.ifElse (isBinaryType ftype) (arraysCompareExpr otherVar fname) (Logic.ifElse (isNonComparableType ftype) (hashCodeCompareExpr otherVar fname) (comparableCompareExpr otherVar fname)))++compareToBody :: t0 -> String -> [Model.FieldType] -> [Syntax.BlockStatement]+compareToBody aliases otherVar fields =++      let zeroStmts = [+            Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0)))]+      in (Optionals.withDefault zeroStmts (Optionals.map (\p ->+        let firstField = Pairs.first p+            restFields = Pairs.second p+        in (Logic.ifElse (Lists.isEmpty restFields) [+          Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (compareFieldExpr otherVar firstField)))] (Lists.concat2 [+          cmpDeclStatement aliases] (Lists.concat2 (Lists.concat (Lists.map (\f -> compareAndReturnStmts otherVar f) (Lists.cons firstField (Optionals.withDefault [] (Lists.init restFields))))) [+          Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (compareFieldExpr otherVar (Optionals.withDefault firstField (Lists.last restFields)))))])))) (Lists.uncons fields)))++compareToZeroClause :: String -> String -> Syntax.InclusiveOrExpression+compareToZeroClause tmpName fname =++      let compareToArg =+              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))+          compareToVar =+                  Syntax.MethodInvocation_VariantExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))+          compareToHeader =+                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                    Syntax.methodInvocation_ComplexVariant = compareToVar,+                    Syntax.methodInvocation_ComplexTypeArguments = [],+                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.compareToMethodName)})+          lhs =+                  Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {+                    Syntax.methodInvocationHeader = compareToHeader,+                    Syntax.methodInvocationArguments = [+                      compareToArg]})))+          rhs =+                  Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))+      in (Utils.javaEqualityExpressionToJavaInclusiveOrExpression (Syntax.EqualityExpressionEqual (Syntax.EqualityExpression_Binary {+        Syntax.equalityExpression_BinaryLhs = lhs,+        Syntax.equalityExpression_BinaryRhs = rhs})))++constantDecl :: String -> String -> JavaEnvironment.Aliases -> Model.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+constantDecl comment javaName aliases name cx g =++      let mods =+              [+                Syntax.FieldModifierPublic,+                Syntax.FieldModifierStatic,+                Syntax.FieldModifierFinal]+          nameName = Utils.nameToJavaName aliases (Model.Name "hydra.core.model.Name")+          env =+                  JavaEnvironment.JavaEnvironment {+                    JavaEnvironment.javaEnvironmentAliases = aliases,+                    JavaEnvironment.javaEnvironmentGraph = g}+      in (Eithers.bind (encodeType aliases Sets.empty (Model.TypeVariable (Model.Name "hydra.core.model.Name")) cx g) (\jt -> Eithers.bind (encodeTerm env (Model.TermLiteral (Model.LiteralString (Model.unName name))) cx g) (\arg ->+        let init =+                Syntax.VariableInitializerExpression (Utils.javaConstructorCall (Utils.javaConstructorName nameName Nothing) [+                  arg] Nothing)+            var = Utils.javaVariableDeclarator (Syntax.Identifier javaName) (Just init)+        in (Right (withCommentString comment (Utils.javaMemberField mods jt var))))))++constantDeclForFieldType :: Model.Name -> JavaEnvironment.Aliases -> Model.FieldType -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+constantDeclForFieldType parentName aliases ftyp cx g =++      let name = Model.fieldTypeName ftyp+          javaName =+                  Formatting.nonAlnumToUnderscores (Formatting.convertCase Util.CaseConventionCamel Util.CaseConventionUpperSnake (Model.unName name))+          comment =+                  Strings.concat [+                    "Name of the {@code ",+                    (Model.unName parentName),+                    ".",+                    (Model.unName name),+                    "} field."]+      in (constantDecl comment javaName aliases name cx g)++constantDeclForTypeName :: JavaEnvironment.Aliases -> Model.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+constantDeclForTypeName aliases name cx g =++      let comment =+              Strings.concat [+                "Name of the {@code ",+                (Model.unName name),+                "} type."]+      in (constantDecl comment "TYPE_" aliases name cx g)++constructElementsInterface :: Packaging.Module -> [Syntax.InterfaceMemberDeclarationWithComments] -> (Model.Name, Syntax.CompilationUnit)+constructElementsInterface mod members =++      let ns = Packaging.moduleName mod+          parentNs = namespaceParent ns+          pkg = Optionals.match parentNs (Utils.javaPackageDeclaration ns) (\pns -> Utils.javaPackageDeclaration pns)+          mods = [+                Syntax.InterfaceModifierPublic]+          className = elementsClassName ns+          elName = elementsQualifiedName ns+          body = Syntax.InterfaceBody members+          itf =+                  Syntax.TopLevelClassOrInterfaceDeclarationInterface (Syntax.InterfaceDeclarationNormalInterface (Syntax.NormalInterfaceDeclaration {+                    Syntax.normalInterfaceDeclarationModifiers = mods,+                    Syntax.normalInterfaceDeclarationIdentifier = (Utils.javaTypeIdentifier className),+                    Syntax.normalInterfaceDeclarationParameters = [],+                    Syntax.normalInterfaceDeclarationExtends = [],+                    Syntax.normalInterfaceDeclarationPermits = [],+                    Syntax.normalInterfaceDeclarationBody = body}))+          decl =+                  Syntax.TopLevelClassOrInterfaceDeclarationWithComments {+                    Syntax.topLevelClassOrInterfaceDeclarationWithCommentsValue = itf,+                    Syntax.topLevelClassOrInterfaceDeclarationWithCommentsComments = (Optionals.bind (Packaging.moduleMetadata mod) (\em -> Packaging.entityMetadataDescription em))}+      in (+        elName,+        (Syntax.CompilationUnitOrdinary (Syntax.OrdinaryCompilationUnit {+          Syntax.ordinaryCompilationUnitPackage = (Just pkg),+          Syntax.ordinaryCompilationUnitImports = [],+          Syntax.ordinaryCompilationUnitTypes = [+            decl]})))++correctCastType :: Model.Term -> [Model.Type] -> Model.Type -> t0 -> t1 -> Either t2 Model.Type+correctCastType innerBody typeArgs fallback cx g =+    case (Strip.deannotateTerm innerBody) of+      Model.TermPair _ -> Logic.ifElse (Equality.equal (Lists.length typeArgs) 2) (Right (Model.TypePair (Model.PairType {+        Model.pairTypeFirst = (Optionals.withDefault fallback (Lists.at 0 typeArgs)),+        Model.pairTypeSecond = (Optionals.withDefault fallback (Lists.at 1 typeArgs))}))) (Right fallback)+      _ -> Right fallback++correctTypeApps :: t0 -> Model.Name -> [Model.Term] -> [Model.Type] -> t1 -> Graph.Graph -> Either Errors.Error [Model.Type]+correctTypeApps gr name args fallbackTypeApps cx g =+    Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right fallbackTypeApps) (\el -> Optionals.match (Model.bindingTypeScheme el) (Right fallbackTypeApps) (\ts ->+      let schemeType = Model.typeSchemeBody ts+          allSchemeVars = Lists.filter (\v -> isSimpleName v) (Model.typeSchemeVariables ts)+          schemeTypeVars = collectTypeVars schemeType+          usedFlags = Lists.map (\v -> Sets.member v schemeTypeVars) allSchemeVars+          usedSchemeVars = filterByFlags allSchemeVars usedFlags+          nParams = countFunctionParams schemeType+          peeled = peelDomainTypes nParams schemeType+          calleeDoms = Pairs.first peeled+          calleeCod = Pairs.second peeled+          overgenSubst = detectAccumulatorUnification calleeDoms calleeCod usedSchemeVars+          keepFlags =+                  Lists.map (\v -> Logic.and (Sets.member v schemeTypeVars) (Logic.not (Maps.member v overgenSubst))) allSchemeVars+          schemeVars = filterByFlags allSchemeVars keepFlags+          filteredFallback0 =+                  Logic.ifElse (Equality.equal (Lists.length allSchemeVars) (Lists.length fallbackTypeApps)) (filterByFlags fallbackTypeApps keepFlags) fallbackTypeApps+          filteredFallback =+                  Logic.ifElse (Maps.isEmpty overgenSubst) filteredFallback0 (Lists.map (\t -> substituteTypeVarsWithTypes overgenSubst t) filteredFallback0)+      in (Logic.ifElse (Logic.or (Lists.isEmpty schemeVars) (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length filteredFallback)))) (Right filteredFallback) (correctTypeAppsWithArgs schemeVars filteredFallback schemeType args cx g)))))++correctTypeAppsWithArgs :: [Model.Name] -> [Model.Type] -> Model.Type -> [Model.Term] -> t0 -> Graph.Graph -> Either Errors.Error [Model.Type]+correctTypeAppsWithArgs schemeVars fallbackTypeApps schemeType args cx g =++      let schemeVarSet = Sets.fromList schemeVars+          irSubst = Maps.fromList (Lists.zip schemeVars fallbackTypeApps)+          peeled = peelDomainTypes (Lists.length args) schemeType+          schemeDoms = Pairs.first peeled+      in (Eithers.bind (Eithers.mapList (\arg -> Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal arg))) args) (\mArgTypes -> Logic.ifElse (Logic.not (Lists.isEmpty (Lists.filter (\m -> Optionals.isNone m) mArgTypes))) (Right fallbackTypeApps) (+        let argTypes = Lists.bind mArgTypes (\m -> Optionals.match m [] (\x -> Lists.singleton x))+            irDoms = Lists.map (\d -> applySubstSimple irSubst d) schemeDoms+            domsMatch =+                    Lists.isEmpty (Lists.filter (\p -> Logic.not (typesMatch (Strip.deannotateType (Pairs.first p)) (Strip.deannotateType (Pairs.second p)))) (Lists.zip irDoms argTypes))+        in (Logic.ifElse domsMatch (Right fallbackTypeApps) (Right (resolveTypeApps schemeVars fallbackTypeApps (buildArgSubst schemeVarSet schemeDoms argTypes)))))))++countFunctionParams :: Model.Type -> Int+countFunctionParams t =+    case (Strip.deannotateType t) of+      Model.TypeFunction v0 -> Math.add 1 (countFunctionParams (Model.functionTypeCodomain v0))+      _ -> 0++declarationForRecordType :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> [Model.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration+declarationForRecordType isInner isSer aliases tparams elName fields cx g =+    declarationForRecordType_ isInner isSer aliases tparams elName Nothing Nothing fields cx g++declarationForRecordType_ :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> Maybe Model.Name -> Maybe Int -> [Model.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration+declarationForRecordType_ isInner isSer aliases tparams elName parentName ordinal fields cx g =+    Eithers.bind (Eithers.mapList (\f -> recordMemberVar aliases f cx g) fields) (\memberVars -> Eithers.bind (Eithers.mapList (\p -> addComment (Pairs.first p) (Pairs.second p) cx g) (Lists.zip memberVars fields)) (\memberVars_ ->+      let elNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases elName)+          linkTargetStr =+                  Optionals.match parentName elNameStr (\pn -> Strings.concat2 (Strings.concat2 (Syntax.unIdentifier (Utils.nameToJavaName aliases pn)) ".") (Utils.sanitizeJavaName (Util.qualifiedNameLocal (CoreNames.qualifyName elName))))+      in (Eithers.bind (Logic.ifElse (Ordering.gt (Lists.length fields) 1) (Eithers.mapList (\f -> Eithers.bind (recordWithMethod aliases elName fields f cx g) (\decl ->+        let fname = Model.unName (Model.fieldTypeName f)+            comment =+                    Strings.concat [+                      "Returns a copy of this {@link ",+                      linkTargetStr,+                      "} with {@code ",+                      fname,+                      "} replaced."]+        in (Right (withCommentString comment decl)))) fields) (Right [])) (\withMethods -> Eithers.bind (recordConstructor aliases elName fields cx g) (\cons -> Eithers.bind (Eithers.mapList (\f ->+        let fname = Utils.sanitizeJavaName (Model.unName (Model.fieldTypeName f))+        in (Eithers.bind (Annotations.commentsFromFieldType cx g f) (\mDoc -> Right (Optionals.match mDoc "" (\d -> Strings.concat [+          "@param ",+          fname,+          " ",+          d]))))) fields) (\paramLines ->+        let nonEmptyParamLines = Lists.filter (\l -> Logic.not (Equality.equal l "")) paramLines+            consBaseComment =+                    Strings.concat [+                      "Constructs an immutable {@link ",+                      linkTargetStr,+                      "}."]+            consComment =+                    Logic.ifElse (Lists.isEmpty nonEmptyParamLines) consBaseComment (Strings.concat [+                      consBaseComment,+                      "\n\n",+                      (Strings.join "\n" nonEmptyParamLines)])+            consWithComment = withCommentString consComment cons+        in (Eithers.bind (Logic.ifElse isInner (Right []) (Eithers.bind (constantDeclForTypeName aliases elName cx g) (\d -> Eithers.bind (Eithers.mapList (\f -> constantDeclForFieldType elName aliases f cx g) fields) (\dfields -> Right (Lists.cons d dfields))))) (\tn -> Eithers.bind (Logic.ifElse isInner (Right []) (recordBuilderClass aliases tparams elName fields cx g)) (\builderDecls ->+          let comparableMethods =+                  Optionals.match parentName (Logic.ifElse (Logic.and (Logic.not isInner) isSer) [+                    recordCompareToMethod aliases tparams elName fields] []) (\pn -> Logic.ifElse isSer (variantCompareToMethod aliases tparams pn elName (Optionals.withDefault 0 ordinal) fields) [])+              noCommentMethods =+                      Lists.map (\x -> noComment x) (Lists.concat2 [+                        recordEqualsMethod aliases elName fields,+                        (recordHashCodeMethod fields),+                        (recordToStringMethod elName fields)] comparableMethods)+              bodyDecls =+                      Lists.concat [+                        tn,+                        memberVars_,+                        [+                          consWithComment],+                        noCommentMethods,+                        withMethods,+                        builderDecls]+              ifaces = Logic.ifElse isInner (serializableTypes isSer) (interfaceTypes isSer aliases tparams elName)+          in (Right (Utils.javaClassDeclaration aliases tparams elName classModsPublic Nothing ifaces bodyDecls)))))))))))++declarationForUnionType :: Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> [Model.FieldType] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration+declarationForUnionType isSer aliases tparams elName fields cx g =+    Eithers.bind (Eithers.mapList (\ftord ->+      let ft = Pairs.first ftord+          ordinal = Pairs.second ftord+          fname = Model.fieldTypeName ft+          ftype = Model.fieldTypeType ft+          rfields =+                  Logic.ifElse (Predicates.isUnitType (Strip.deannotateType ftype)) [] [+                    Model.FieldType {+                      Model.fieldTypeName = (Model.Name "value"),+                      Model.fieldTypeType = (Strip.deannotateType ftype)}]+          varName = Utils.variantClassName False elName fname+      in (Eithers.bind (declarationForRecordType_ True isSer aliases [] varName (Logic.ifElse isSer (Just elName) Nothing) (Logic.ifElse isSer (Just ordinal) Nothing) rfields cx g) (\innerDecl -> Right (augmentVariantClass aliases tparams elName innerDecl)))) (Lists.zip fields (Math.range 0 (Lists.length fields)))) (\variantClasses ->+      let variantDecls =+              Lists.map (\vc -> Syntax.ClassBodyDeclarationClassMember (Syntax.ClassMemberDeclarationClass vc)) variantClasses+      in (Eithers.bind (Eithers.mapList (\pair -> addComment (Pairs.first pair) (Pairs.second pair) cx g) (Lists.zip variantDecls fields)) (\variantDecls_ ->+        let privateConst = Utils.makeConstructor aliases elName True [] []+            acceptDecl = Utils.toAcceptMethod True tparams+            vtparams = Lists.concat2 tparams [+                  Utils.javaTypeParameter JavaNames.visitorReturnParameter]+            elNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases elName)+            visitorMethods =+                    Lists.map (\ft ->+                      let fname = Model.fieldTypeName ft+                          fnameStr = Model.unName fname+                          typeArgs = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams+                          varName = Utils.variantClassName False elName fname+                          varNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases varName)+                          varLocalStr = Utils.sanitizeJavaName (Util.qualifiedNameLocal (CoreNames.qualifyName varName))+                          linkVarNameStr = Strings.concat2 (Strings.concat2 elNameStr ".") varLocalStr+                          varRef = Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs varName Nothing)+                          param = Utils.javaTypeToJavaFormalParameter varRef (Model.Name "instance")+                          resultR = Utils.javaTypeToJavaResult (Syntax.TypeReference Utils.visitorTypeVariable)+                          comment =+                                  Strings.concat [+                                    "Visit the {@link ",+                                    linkVarNameStr,+                                    "} case."]+                      in (comment, (Utils.interfaceMethodDeclaration [] [] JavaNames.visitMethodName [+                        param] resultR Nothing))) fields+            visitorBody =+                    Syntax.InterfaceBody (Lists.map (\p -> withInterfaceCommentString (Pairs.first p) (Pairs.second p)) visitorMethods)+            visitor =+                    Utils.javaInterfaceDeclarationToJavaClassBodyDeclaration (Syntax.NormalInterfaceDeclaration {+                      Syntax.normalInterfaceDeclarationModifiers = [+                        Syntax.InterfaceModifierPublic],+                      Syntax.normalInterfaceDeclarationIdentifier = (Syntax.TypeIdentifier (Syntax.Identifier JavaNames.visitorName)),+                      Syntax.normalInterfaceDeclarationParameters = vtparams,+                      Syntax.normalInterfaceDeclarationExtends = [],+                      Syntax.normalInterfaceDeclarationPermits = [],+                      Syntax.normalInterfaceDeclarationBody = visitorBody})+            typeArgs = Lists.map (\tp -> Utils.typeParameterToTypeArgument tp) tparams+            visitorClassType =+                    Utils.javaClassType (Lists.concat2 (Lists.map (\tp -> Utils.typeParameterToReferenceType tp) tparams) [+                      Utils.visitorTypeVariable]) Nothing JavaNames.visitorName+            mainInstanceParam =+                    Utils.javaTypeToJavaFormalParameter (Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs elName Nothing)) (Model.Name "instance")+            resultR = Utils.javaTypeToJavaResult (Syntax.TypeReference Utils.visitorTypeVariable)+            throwStmt =+                    Syntax.BlockStatementStatement (Utils.javaThrowIllegalStateException [+                      Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions [+                        Utils.javaStringMultiplicativeExpression "Non-exhaustive patterns when matching: ",+                        (Syntax.MultiplicativeExpressionUnary (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier "instance")))])])+            defaultMod = [+                  Syntax.InterfaceMethodModifierDefault]+            otherwiseDecl =+                    Utils.interfaceMethodDeclaration defaultMod [] JavaNames.otherwiseMethodName [+                      mainInstanceParam] resultR (Just [+                      throwStmt])+            otherwiseComment = "Default branch for unhandled cases."+            pvVisitMethods =+                    Lists.map (\ft ->+                      let fname = Model.fieldTypeName ft+                          varName = Utils.variantClassName False elName fname+                          varNameStr = Syntax.unIdentifier (Utils.nameToJavaName aliases varName)+                          varLocalStr = Utils.sanitizeJavaName (Util.qualifiedNameLocal (CoreNames.qualifyName varName))+                          linkVarNameStr = Strings.concat2 (Strings.concat2 elNameStr ".") varLocalStr+                          varRef = Utils.javaClassTypeToJavaType (Utils.nameToJavaClassType aliases False typeArgs varName Nothing)+                          param = Utils.javaTypeToJavaFormalParameter varRef (Model.Name "instance")+                          mi =+                                  Utils.methodInvocation Nothing (Syntax.Identifier JavaNames.otherwiseMethodName) [+                                    Utils.javaIdentifierToJavaExpression (Syntax.Identifier "instance")]+                          returnOtherwise =+                                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaPrimaryToJavaExpression (Utils.javaMethodInvocationToJavaPrimary mi))))+                          comment =+                                  Strings.concat [+                                    "Visit the {@link ",+                                    linkVarNameStr,+                                    "} case."]+                      in (+                        comment,+                        (Utils.interfaceMethodDeclaration defaultMod [] JavaNames.visitMethodName [+                          param] resultR (Just [+                          returnOtherwise])))) fields+            pvBody =+                    Syntax.InterfaceBody (Lists.cons (withInterfaceCommentString otherwiseComment otherwiseDecl) (Lists.map (\p -> withInterfaceCommentString (Pairs.first p) (Pairs.second p)) pvVisitMethods))+            partialVisitor =+                    Utils.javaInterfaceDeclarationToJavaClassBodyDeclaration (Syntax.NormalInterfaceDeclaration {+                      Syntax.normalInterfaceDeclarationModifiers = [+                        Syntax.InterfaceModifierPublic],+                      Syntax.normalInterfaceDeclarationIdentifier = (Syntax.TypeIdentifier (Syntax.Identifier JavaNames.partialVisitorName)),+                      Syntax.normalInterfaceDeclarationParameters = vtparams,+                      Syntax.normalInterfaceDeclarationExtends = [+                        Syntax.InterfaceType visitorClassType],+                      Syntax.normalInterfaceDeclarationPermits = [],+                      Syntax.normalInterfaceDeclarationBody = pvBody})+        in (Eithers.bind (constantDeclForTypeName aliases elName cx g) (\tn0 -> Eithers.bind (Eithers.mapList (\ft -> constantDeclForFieldType elName aliases ft cx g) fields) (\tn1 ->+          let tn = Lists.concat2 [+                tn0] tn1+              privateConstComment =+                      Strings.concat [+                        "Constructs an immutable {@link ",+                        elNameStr,+                        "}."]+              acceptComment = "Dispatch to {@code visitor}."+              visitorIfaceComment =+                      Strings.concat [+                        "Visitor over {@link ",+                        elNameStr,+                        "}."]+              partialVisitorIfaceComment =+                      Strings.concat [+                        "Partial visitor over {@link ",+                        elNameStr,+                        "} with a default {@link #otherwise} branch."]+              hydraOrdinalAbstractDecls = Logic.ifElse isSer [+                    noComment (hydraOrdinalMethod Nothing)] []+              otherDecls =+                      Lists.concat2 [+                        withCommentString privateConstComment privateConst,+                        (withCommentString acceptComment acceptDecl),+                        (withCommentString visitorIfaceComment visitor),+                        (withCommentString partialVisitorIfaceComment partialVisitor)] hydraOrdinalAbstractDecls+              bodyDecls =+                      Lists.concat [+                        tn,+                        otherDecls,+                        variantDecls_]+              mods = Lists.concat2 classModsPublic [+                    Syntax.ClassModifierAbstract]+          in (Right (Utils.javaClassDeclaration aliases tparams elName mods Nothing (interfaceTypes isSer aliases tparams elName) bodyDecls))))))))++decodeTypeFromTerm :: Model.Term -> Maybe Model.Type+decodeTypeFromTerm term =+    case (Strip.deannotateTerm term) of+      Model.TermInject v0 -> Logic.ifElse (Equality.equal (Model.injectionTypeName v0) (Model.Name "hydra.core.model.Type")) (+        let fname = Model.unName (Model.fieldName (Model.injectionField v0))+            fterm = Model.fieldTerm (Model.injectionField v0)+        in (Logic.ifElse (Equality.equal fname "variable") (case fterm of+          Model.TermWrap v1 -> case (Model.wrappedTermBody v1) of+            Model.TermLiteral v2 -> case v2 of+              Model.LiteralString v3 -> Just (Model.TypeVariable (Model.Name v3))+              _ -> Nothing+            _ -> Nothing+          _ -> Nothing) (Logic.ifElse (Equality.equal fname "annotated") (case fterm of+          Model.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Model.fieldName f) (Model.Name "body")) (Model.recordFields v1))) (\bodyField -> decodeTypeFromTerm (Model.fieldTerm bodyField))+          _ -> Nothing) (Logic.ifElse (Equality.equal fname "application") (case fterm of+          Model.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Model.fieldName f) (Model.Name "function")) (Model.recordFields v1))) (\funcField -> Optionals.bind (decodeTypeFromTerm (Model.fieldTerm funcField)) (\func -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Model.fieldName f) (Model.Name "argument")) (Model.recordFields v1))) (\argField -> Optionals.map (\arg -> Model.TypeApplication (Model.ApplicationType {+            Model.applicationTypeFunction = func,+            Model.applicationTypeArgument = arg})) (decodeTypeFromTerm (Model.fieldTerm argField)))))+          _ -> Nothing) (Logic.ifElse (Equality.equal fname "function") (case fterm of+          Model.TermRecord v1 -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Model.fieldName f) (Model.Name "domain")) (Model.recordFields v1))) (\domField -> Optionals.bind (decodeTypeFromTerm (Model.fieldTerm domField)) (\dom -> Optionals.bind (Lists.head (Lists.filter (\f -> Equality.equal (Model.fieldName f) (Model.Name "codomain")) (Model.recordFields v1))) (\codField -> Optionals.map (\cod -> Model.TypeFunction (Model.FunctionType {+            Model.functionTypeDomain = dom,+            Model.functionTypeCodomain = cod})) (decodeTypeFromTerm (Model.fieldTerm codField)))))+          _ -> Nothing) (Logic.ifElse (Equality.equal fname "literal") (case fterm of+          Model.TermInject v1 -> Logic.ifElse (Equality.equal (Model.unName (Model.fieldName (Model.injectionField v1))) "string") (Just (Model.TypeLiteral Model.LiteralTypeString)) Nothing+          _ -> Nothing) Nothing)))))) Nothing+      _ -> Nothing++dedupBindings :: S.Set Model.Name -> [Model.Binding] -> [Model.Binding]+dedupBindings inScope bs =+    Optionals.withDefault [] (Optionals.map (\p ->+      let b = Pairs.first p+          rest = Pairs.second p+          name = Model.bindingName b+      in (Logic.ifElse (Sets.member name inScope) (+        let newName = freshJavaName name inScope+            subst = Maps.singleton name newName+            rest2 =+                    Lists.map (\b2 -> Model.Binding {+                      Model.bindingName = (Model.bindingName b2),+                      Model.bindingTerm = (Variables.substituteVariables subst (Model.bindingTerm b2)),+                      Model.bindingTypeScheme = (Model.bindingTypeScheme b2)}) rest+        in (Lists.cons (Model.Binding {+          Model.bindingName = newName,+          Model.bindingTerm = (Model.bindingTerm b),+          Model.bindingTypeScheme = (Model.bindingTypeScheme b)}) (dedupBindings (Sets.insert newName inScope) rest2))) (Lists.cons b (dedupBindings (Sets.insert name inScope) rest)))) (Lists.uncons bs))++detectAccumulatorUnification :: [Model.Type] -> Model.Type -> [Model.Name] -> M.Map Model.Name Model.Type+detectAccumulatorUnification doms cod tparams =++      let tparamSet = Sets.fromList tparams+          allPairs = Lists.bind doms (\d -> extractInOutPair d)+          groupedByInput = groupPairsByFirst allPairs+          selfRefSubst = selfRefSubstitution groupedByInput+          directPairs = Lists.bind doms (\d -> extractDirectReturn tparamSet d)+          groupedDirect = groupPairsByFirst directPairs+          directInputVars = Sets.fromList (Lists.map (\p -> Pairs.first p) directPairs)+          codVar =+                  case (Strip.deannotateType cod) of+                    Model.TypeVariable v0 -> Just v0+                    _ -> Nothing+          directRefSubst = directRefSubstitution directInputVars codVar groupedDirect+          codSubst =+                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Maps.member cv selfRefSubst) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Logic.ifElse (Equality.equal cv refVar) Maps.empty (Maps.singleton cv refVar))))+          domVars = Sets.fromList (Lists.bind doms (\d -> Sets.toList (collectTypeVars d)))+          danglingSubst =+                  Optionals.match (findPairFirst cod) Maps.empty (\cv -> Logic.ifElse (Sets.member cv domVars) Maps.empty (Optionals.match (findSelfRefVar groupedByInput) Maps.empty (\refVar -> Maps.singleton cv (Model.TypeVariable refVar))))+      in (Maps.union (Maps.union (Maps.union (nameMapToTypeMap selfRefSubst) (nameMapToTypeMap codSubst)) danglingSubst) (nameMapToTypeMap directRefSubst))++directRefSubstitution :: (Eq t0, Ord t0) => (S.Set t0 -> Maybe t0 -> M.Map t0 [t0] -> M.Map t0 t0)+directRefSubstitution directInputVars codVar grouped =+    Lists.foldl (\subst -> \entry -> directRefSubstitution_processGroup directInputVars codVar subst (Pairs.first entry) (Pairs.second entry)) Maps.empty (Maps.toList grouped)++directRefSubstitution_processGroup :: (Eq t0, Ord t0) => (S.Set t0 -> Maybe t0 -> M.Map t0 t0 -> t0 -> [t0] -> M.Map t0 t0)+directRefSubstitution_processGroup directInputVars codVar subst inVar outVars =++      let selfRefCount = Lists.length (Lists.filter (\v -> Equality.equal v inVar) outVars)+          nonSelfVars = Lists.filter (\v -> Logic.not (Equality.equal v inVar)) outVars+          safeNonSelfVars =+                  Lists.filter (\v -> Logic.and (Logic.not (Sets.member v directInputVars)) (Logic.not (Equality.equal (Just v) codVar))) nonSelfVars+      in (Logic.ifElse (Logic.and (Ordering.gte selfRefCount 2) (Logic.not (Lists.isEmpty safeNonSelfVars))) (Lists.foldl (\s -> \v -> Maps.insert v inVar s) subst safeNonSelfVars) subst)++domTypeArgs :: JavaEnvironment.Aliases -> Model.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]+domTypeArgs aliases d cx g =++      let args = extractTypeApplicationArgs (Strip.deannotateType d)+      in (Logic.ifElse (Logic.not (Lists.isEmpty args)) (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) args) (Right (javaTypeArgumentsForType d)))++elementJavaIdentifier :: Bool -> Bool -> JavaEnvironment.Aliases -> Model.Name -> Syntax.Identifier+elementJavaIdentifier isPrim isMethod aliases name =++      let qn = CoreNames.qualifyName name+          ns_ = Util.qualifiedNameModuleName qn+          local = Util.qualifiedNameLocal qn+          sep = Logic.ifElse isMethod "::" "."+      in (Logic.ifElse isPrim (Syntax.Identifier (Strings.concat2 (Strings.concat2 (elementJavaIdentifier_qualify aliases ns_ (Formatting.capitalize local)) ".") JavaNames.applyMethodName)) (Optionals.match ns_ (Syntax.Identifier (Utils.sanitizeJavaName local)) (\n -> Syntax.Identifier (Strings.concat2 (Strings.concat2 (elementJavaIdentifier_qualify aliases (namespaceParent n) (elementsClassName n)) sep) (Utils.sanitizeJavaName local)))))++elementJavaIdentifier_qualify :: JavaEnvironment.Aliases -> Maybe Packaging.ModuleName -> String -> String+elementJavaIdentifier_qualify aliases mns s =+    Syntax.unIdentifier (Utils.nameToJavaName aliases (CoreNames.unqualifyName (Util.QualifiedName {+      Util.qualifiedNameModuleName = mns,+      Util.qualifiedNameLocal = s})))++elementsClassName :: Packaging.ModuleName -> String+elementsClassName ns =++      let nsStr = Packaging.unModuleName ns+          parts = Strings.splitOn "." nsStr+      in (Formatting.sanitizeWithUnderscores Language.reservedWords (Formatting.capitalize (Optionals.withDefault nsStr (Lists.last parts))))++elementsQualifiedName :: Packaging.ModuleName -> Model.Name+elementsQualifiedName ns =+    CoreNames.unqualifyName (Util.QualifiedName {+      Util.qualifiedNameModuleName = (namespaceParent ns),+      Util.qualifiedNameLocal = (elementsClassName ns)})++encodeApplication :: JavaEnvironment.JavaEnvironment -> Model.Application -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeApplication env app cx g0 =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          g = JavaEnvironment.javaEnvironmentGraph env+          gathered = Analysis.gatherArgsWithTypeApps (Model.TermApplication app) [] []+          fun = Pairs.first gathered+          args = Pairs.first (Pairs.second gathered)+          typeApps = Pairs.second (Pairs.second gathered)+      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal fun))) (\mfunTyp -> Eithers.bind (Optionals.match mfunTyp (Checking.typeOfTerm cx g fun) (\t -> Right t)) (\funTyp ->+        let arity = Arity.typeArity funTyp+            deannotatedFun = Strip.deannotateTerm fun+            calleeName =+                    case deannotatedFun of+                      Model.TermVariable v0 -> Just v0+                      _ -> Nothing+        in (Eithers.bind (Optionals.match calleeName (Right args) (\cname -> annotateLambdaArgs cname typeApps args cx g)) (\annotatedArgs -> case deannotatedFun of+          Model.TermVariable v0 -> Logic.ifElse (Optionals.isGiven (Maps.lookup v0 (Graph.graphPrimitives g))) (+            let hargs = Lists.take arity annotatedArgs+                rargs = Lists.drop arity annotatedArgs+            in (Eithers.bind (functionCall env True v0 hargs [] cx g) (\initialCall -> Eithers.foldList (\acc -> \h -> Eithers.bind (encodeTerm env h cx g) (\jarg -> Right (applyJavaArg acc jarg))) initialCall rargs))) (Logic.ifElse (Logic.and (isRecursiveVariable aliases v0) (Logic.not (isLambdaBoundIn v0 (JavaEnvironment.aliasesLambdaVars aliases)))) (encodeApplication_fallback env aliases g typeApps (Model.applicationFunction app) (Model.applicationArgument app) cx g) (Eithers.bind (classifyDataReference v0 cx g) (\symClass ->+            let methodArity =+                    case symClass of+                      JavaEnvironment.JavaSymbolClassHoistedLambda v1 -> v1+                      _ -> arity+                hargs = Lists.take methodArity annotatedArgs+                rargs = Lists.drop methodArity annotatedArgs+                trusted = JavaEnvironment.aliasesTrustedTypeVars aliases+                inScope = JavaEnvironment.aliasesInScopeTypeParams aliases+                filteredTypeApps =+                        Logic.ifElse (Logic.or (Sets.isEmpty trusted) (Sets.isEmpty inScope)) [] (+                          let allVars = Sets.unions (Lists.map (\t -> collectTypeVars t) typeApps)+                          in (Logic.ifElse (Logic.not (Sets.isEmpty (Sets.difference allVars inScope))) [] (Logic.ifElse (Sets.isEmpty (Sets.difference allVars trusted)) typeApps [])))+            in (Eithers.bind (Logic.ifElse (Lists.isEmpty filteredTypeApps) (Right []) (correctTypeApps g v0 hargs filteredTypeApps cx g)) (\safeTypeApps -> Eithers.bind (filterPhantomTypeArgs v0 safeTypeApps cx g) (\finalTypeApps -> Eithers.bind (functionCall env False v0 hargs finalTypeApps cx g) (\initialCall -> Eithers.foldList (\acc -> \h -> Eithers.bind (encodeTerm env h cx g) (\jarg -> Right (applyJavaArg acc jarg))) initialCall rargs)))))))+          _ -> encodeApplication_fallback env aliases g typeApps (Model.applicationFunction app) (Model.applicationArgument app) cx g)))))++encodeApplication_fallback :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Graph.Graph -> [Model.Type] -> Model.Term -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeApplication_fallback env aliases gr typeApps lhs rhs cx g =+    Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal lhs))) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g lhs) (\typ -> Right typ)) (\t -> case (Strip.deannotateTypeParameters (Strip.deannotateType t)) of+      Model.TypeFunction v0 ->+        let dom = Model.functionTypeDomain v0+            cod = Model.functionTypeCodomain v0+            defaultExpr =+                    \_bug438_dflt -> Eithers.bind (encodeTerm env lhs cx g) (\jfun -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Right (applyJavaArg jfun jarg)))+            elimBranch =+                    \_bug438_elim -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Eithers.bind (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType dom))) (Right dom) (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g (Annotations.termAnnotationInternal rhs))) (\mrt -> Optionals.match mrt (Eithers.bind (Checking.typeOfTerm cx g rhs) (\rt -> Right (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType rt))) rt dom))) (\rt -> Right (Logic.ifElse (Logic.not (Lists.isEmpty (javaTypeArgumentsForType rt))) rt dom))))) (\enrichedDom -> encodeElimination env (Just jarg) enrichedDom cod (Strip.deannotateTerm lhs) cx g))+        in case (Strip.deannotateAndDetypeTerm lhs) of+          Model.TermProject _ -> elimBranch ()+          Model.TermCases _ -> elimBranch ()+          Model.TermUnwrap _ -> elimBranch ()+          _ -> defaultExpr ()+      _ -> Eithers.bind (encodeTerm env lhs cx g) (\jfun -> Eithers.bind (encodeTerm env rhs cx g) (\jarg -> Right (applyJavaArg jfun jarg)))))++encodeDefinitions :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map Model.Name Syntax.CompilationUnit)+encodeDefinitions overlaySubs mod defs cx g =++      let aliases = Utils.importAliasesForModule overlaySubs mod+          env =+                  JavaEnvironment.JavaEnvironment {+                    JavaEnvironment.javaEnvironmentAliases = aliases,+                    JavaEnvironment.javaEnvironmentGraph = g}+          pkg = Utils.javaPackageDeclaration (Packaging.moduleName mod)+          partitioned = CoreEnvironment.partitionDefinitions defs+          typeDefs = Pairs.first partitioned+          termDefs = Pairs.second partitioned+          nonTypedefDefs =+                  Lists.filter (\td ->+                    let typ = Model.typeSchemeBody (Packaging.typeDefinitionBody td)+                    in (isSerializableJavaType typ)) typeDefs+      in (Eithers.bind (Eithers.mapList (\td -> encodeTypeDefinition pkg aliases td cx g) nonTypedefDefs) (\typeUnits -> Eithers.bind (Logic.ifElse (Lists.isEmpty termDefs) (Right []) (Eithers.bind (Eithers.mapList (\td -> encodeTermDefinition env td cx g) termDefs) (\dataMembers -> Right [+        constructElementsInterface mod dataMembers]))) (\termUnits -> Right (Maps.fromList (Lists.concat2 typeUnits termUnits)))))++encodeElimination :: JavaEnvironment.JavaEnvironment -> Maybe Syntax.Expression -> Model.Type -> Model.Type -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeElimination env marg dom cod elimTerm cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+      in case (Strip.deannotateAndDetypeTerm elimTerm) of+        Model.TermProject v0 ->+          let fname = Model.projectionFieldName v0+          in (Eithers.bind (encodeType aliases Sets.empty dom cx g) (\jdom0 -> Eithers.bind (Utils.javaTypeToJavaReferenceType jdom0 cx) (\_ -> Optionals.match marg (+            let projVar = Model.Name "projected"+                jbody =+                        Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.variableToJavaIdentifier projVar) (Utils.javaIdentifier (Model.unName fname)))+            in (Right (Utils.javaLambda projVar jbody))) (\jarg ->+            let qual = Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary jarg)+            in (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {+              Syntax.fieldAccessQualifier = qual,+              Syntax.fieldAccessIdentifier = (Utils.javaIdentifier (Model.unName fname))})))))))+        Model.TermCases v0 ->+          let tname = Model.caseStatementTypeName v0+              def_ = Model.caseStatementDefault v0+              fields = Model.caseStatementCases v0+          in (Optionals.match marg (+            let uVar = Model.Name "u"+                domTypeArgs0 =+                        \ty -> \acc -> case (Strip.deannotateType ty) of+                          Model.TypeApplication v1 -> domTypeArgs0 (Model.applicationTypeFunction v1) (Lists.cons (Model.applicationTypeArgument v1) acc)+                          _ -> acc+                domTypeArgs = domTypeArgs0 dom []+                bareElim = Strip.deannotateAndDetypeTerm elimTerm+                wrappedElimTerm =+                        Lists.foldl (\trm -> \t -> Model.TermTypeApplication (Model.TypeApplicationTerm {+                          Model.typeApplicationTermBody = trm,+                          Model.typeApplicationTermType = t})) bareElim domTypeArgs+                typedLambda =+                        Model.TermLambda (Model.Lambda {+                          Model.lambdaParameter = uVar,+                          Model.lambdaDomain = (Just dom),+                          Model.lambdaBody = (Model.TermApplication (Model.Application {+                            Model.applicationFunction = wrappedElimTerm,+                            Model.applicationArgument = (Model.TermVariable uVar)}))})+            in (encodeTerm env typedLambda cx g)) (\jarg ->+            let prim = Utils.javaExpressionToJavaPrimary jarg+                consId = innerClassRef aliases tname JavaNames.partialVisitorName+                effectiveCod = cod+            in (Eithers.bind (encodeType aliases Sets.empty effectiveCod cx g) (\jcod -> Eithers.bind (Utils.javaTypeToJavaReferenceType jcod cx) (\rt -> Eithers.bind (domTypeArgs aliases dom cx g) (\domArgs -> Eithers.bind (Logic.ifElse (Lists.isEmpty domArgs) (javaTypeArgumentsForNamedType tname cx g) (Right domArgs)) (\targArgs ->+              let targs = explicitTypeArguments (Lists.concat2 targArgs [+                    Syntax.TypeArgumentReference rt])+              in (Eithers.bind (Logic.ifElse (Lists.isEmpty domArgs) (javaTypeArgumentsForNamedType tname cx g) (Right domArgs)) (\unionArgs -> Eithers.bind (Optionals.match def_ (Right []) (\d -> Eithers.bind (otherwiseBranch env aliases dom cod tname jcod unionArgs d cx g) (\b -> Right [+                b]))) (\otherwiseBranches -> Eithers.bind (Eithers.mapList (\f -> visitBranch env aliases dom tname jcod unionArgs f cx g) fields) (\visitBranches ->+                let body = Syntax.ClassBody (Lists.concat2 otherwiseBranches visitBranches)+                    visitor = Utils.javaConstructorCall (Utils.javaConstructorName consId (Just targs)) [] (Just body)+                in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right prim)) (Syntax.Identifier JavaNames.acceptMethodName) [+                  visitor]))))))))))))))+        Model.TermUnwrap _ ->+          let withArg =+                  \ja -> Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {+                    Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary ja)),+                    Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)})+          in (Right (Optionals.match marg (+            let wVar = Model.Name "wrapped"+                wArg = Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier wVar)+            in (Utils.javaLambda wVar (withArg wArg))) (\jarg -> withArg jarg)))+        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "unexpected " (Strings.concat2 "elimination case" (Strings.concat2 " in " "encodeElimination")))))++encodeFunction :: JavaEnvironment.JavaEnvironment -> Model.Type -> Model.Type -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeFunction env dom cod funTerm cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          encodeLambdaFallback =+                  \env2 -> \lam ->+                    let lambdaVar = Model.lambdaParameter lam+                        body = Model.lambdaBody lam+                    in (Eithers.bind (analyzeJavaFunction env2 body cx g) (\fs ->+                      let bindings = Typing.functionStructureBindings fs+                          innerBody = Typing.functionStructureBody fs+                          env3 = Typing.functionStructureEnvironment fs+                      in (Eithers.bind (bindingsToStatements env3 bindings cx g) (\bindResult ->+                        let bindingStmts = Pairs.first bindResult+                            env4 = Pairs.second bindResult+                        in (Eithers.bind (encodeTerm env4 innerBody cx g) (\jbody ->+                          let lam1 =+                                  Logic.ifElse (Lists.isEmpty bindings) (Utils.javaLambda lambdaVar jbody) (+                                    let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))+                                    in (Utils.javaLambdaFromBlock lambdaVar (Syntax.Block (Lists.concat2 bindingStmts [+                                      returnSt]))))+                          in (applyCastIfSafe aliases (Model.TypeFunction (Model.FunctionType {+                            Model.functionTypeDomain = dom,+                            Model.functionTypeCodomain = cod})) lam1 cx g)))))))+      in case (Strip.deannotateTerm funTerm) of+        Model.TermProject _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g+        Model.TermCases _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g+        Model.TermUnwrap _ -> encodeElimination env Nothing dom cod (Strip.deannotateTerm funTerm) cx g+        Model.TermLambda v0 -> withLambda env v0 (\env2 ->+          let lambdaVar = Model.lambdaParameter v0+              body = Model.lambdaBody v0+          in case (Strip.deannotateTerm body) of+            Model.TermLambda v1 -> case (Strip.deannotateType cod) of+              Model.TypeFunction v2 ->+                let dom2 = Model.functionTypeDomain v2+                    cod2 = Model.functionTypeCodomain v2+                in (Eithers.bind (encodeFunction env2 dom2 cod2 (Model.TermLambda v1) cx g) (\innerJavaLambda ->+                  let lam1 = Utils.javaLambda lambdaVar innerJavaLambda+                  in (applyCastIfSafe aliases (Model.TypeFunction (Model.FunctionType {+                    Model.functionTypeDomain = dom,+                    Model.functionTypeCodomain = cod})) lam1 cx g)))+              _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "expected function type for lambda body, but got: " (PrintModel.type_ cod))))+            _ -> encodeLambdaFallback env2 v0)+        _ -> Right (encodeLiteral (Model.LiteralString (Strings.concat2 "Unimplemented function variant: " (PrintModel.term funTerm))))++encodeFunctionFormTerm :: JavaEnvironment.JavaEnvironment -> [M.Map Model.Name Model.Term] -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeFunctionFormTerm env anns term cx g =++      let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+      in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Optionals.match (tryInferFunctionType term) (Checking.typeOfTerm cx g term) (\inferredType -> Right inferredType)) (\t -> Right t)) (\typ -> case (Strip.deannotateType typ) of+        Model.TypeFunction v0 -> encodeFunction env (Model.functionTypeDomain v0) (Model.functionTypeCodomain v0) term cx g+        _ -> encodeNullaryConstant env typ term cx g)))++encodeFunctionPrimitiveByName :: JavaEnvironment.JavaEnvironment -> Model.Type -> Model.Type -> Model.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeFunctionPrimitiveByName env dom cod name cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          classWithApply = Syntax.unIdentifier (elementJavaIdentifier True False aliases name)+          suffix = Strings.concat2 "." JavaNames.applyMethodName+          className =+                  Strings.fromList (Lists.take (Math.sub (Strings.length classWithApply) (Strings.length suffix)) (Strings.toList classWithApply))+          arity =+                  Arity.typeArity (Model.TypeFunction (Model.FunctionType {+                    Model.functionTypeDomain = dom,+                    Model.functionTypeCodomain = cod}))+      in (Logic.ifElse (Ordering.lte arity 1) (Right (Utils.javaIdentifierToJavaExpression (Syntax.Identifier (Strings.concat [+        className,+        "::",+        JavaNames.applyMethodName])))) (+        let paramNames = Lists.map (\i -> Model.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 arity)+            paramExprs = Lists.map (\p -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier p)) paramNames+            classId = Syntax.Identifier className+            call =+                    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic classId (Syntax.Identifier JavaNames.applyMethodName) paramExprs)+            curried = buildCurriedLambda paramNames call+        in (Eithers.bind (encodeType aliases Sets.empty (Model.TypeFunction (Model.FunctionType {+          Model.functionTypeDomain = dom,+          Model.functionTypeCodomain = cod})) cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression curried))))))))++encodeLiteral :: Model.Literal -> Syntax.Expression+encodeLiteral lit =+    case lit of+      Model.LiteralBinary v0 ->+        let byteValues = Literals.binaryToBytes v0+        in (Utils.javaArrayCreation Utils.javaBytePrimitiveType (Just (Utils.javaArrayInitializer (Lists.map (\w -> Utils.javaLiteralToJavaExpression (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int32ToBigint (Logic.ifElse (Ordering.gt w 127) (Math.sub w 256) w))))) byteValues))))+      Model.LiteralBoolean v0 -> encodeLiteral_litExp (Utils.javaBoolean v0)+      Model.LiteralDecimal v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigDecimal") Nothing) [+        encodeLiteral (Model.LiteralString (Literals.printDecimal v0))] Nothing+      Model.LiteralFloat v0 -> encodeLiteral_encodeFloat v0+      Model.LiteralInteger v0 -> encodeLiteral_encodeInteger v0+      Model.LiteralString v0 -> encodeLiteral_litExp (Utils.javaString v0)++encodeLiteralType :: Model.LiteralType -> t0 -> t1 -> Either t2 Syntax.Type+encodeLiteralType lt cx g =+    case lt of+      Model.LiteralTypeBinary -> Right (Syntax.TypeReference (Syntax.ReferenceTypeArray (Syntax.ArrayType {+        Syntax.arrayTypeDims = (Syntax.Dims [+          []]),+        Syntax.arrayTypeVariant = (Syntax.ArrayType_VariantPrimitive (Syntax.PrimitiveTypeWithAnnotations {+          Syntax.primitiveTypeWithAnnotationsType = (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeByte)),+          Syntax.primitiveTypeWithAnnotationsAnnotations = []}))})))+      Model.LiteralTypeBoolean -> encodeLiteralType_simple "Boolean" cx g+      Model.LiteralTypeDecimal -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [+        "java",+        "math"])) "BigDecimal")+      Model.LiteralTypeFloat v0 -> case v0 of+        Model.FloatTypeFloat32 -> encodeLiteralType_simple "Float" cx g+        Model.FloatTypeFloat64 -> encodeLiteralType_simple "Double" cx g+      Model.LiteralTypeInteger v0 -> case v0 of+        Model.IntegerTypeBigint -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [+          "java",+          "math"])) "BigInteger")+        Model.IntegerTypeInt8 -> encodeLiteralType_simple "Byte" cx g+        Model.IntegerTypeInt16 -> encodeLiteralType_simple "Short" cx g+        Model.IntegerTypeInt32 -> encodeLiteralType_simple "Integer" cx g+        Model.IntegerTypeInt64 -> encodeLiteralType_simple "Long" cx g+        Model.IntegerTypeUint8 -> encodeLiteralType_simple "Short" cx g+        Model.IntegerTypeUint16 -> encodeLiteralType_simple "Character" cx g+        Model.IntegerTypeUint32 -> encodeLiteralType_simple "Long" cx g+        Model.IntegerTypeUint64 -> Right (Utils.javaRefType [] (Just (JavaNames.javaPackageName [+          "java",+          "math"])) "BigInteger")+      Model.LiteralTypeString -> encodeLiteralType_simple "String" cx g++encodeLiteralType_simple :: String -> t0 -> t1 -> Either t2 Syntax.Type+encodeLiteralType_simple n cx g = Right (Utils.javaRefType [] Nothing n)++encodeLiteral_encodeFloat :: Model.FloatValue -> Syntax.Expression+encodeLiteral_encodeFloat f =+    case f of+      Model.FloatValueFloat32 v0 -> encodeLiteral_encodeFloat32 v0+      Model.FloatValueFloat64 v0 -> encodeLiteral_encodeFloat64 v0++encodeLiteral_encodeFloat32 :: Float -> Syntax.Expression+encodeLiteral_encodeFloat32 v =++      let s = Literals.printFloat32 v+      in (Logic.ifElse (Equality.equal s "NaN") (encodeLiteral_javaSpecialFloatExpr "Float" "NaN") (Logic.ifElse (Equality.equal s "Infinity") (encodeLiteral_javaSpecialFloatExpr "Float" "POSITIVE_INFINITY") (Logic.ifElse (Equality.equal s "-Infinity") (encodeLiteral_javaSpecialFloatExpr "Float" "NEGATIVE_INFINITY") (encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeFloatingPoint Syntax.FloatingPointTypeFloat)) (encodeLiteral_litExp (Syntax.LiteralFloatingPoint (Syntax.FloatingPointLiteral (Literals.float32ToFloat64 v))))))))++encodeLiteral_encodeFloat64 :: Double -> Syntax.Expression+encodeLiteral_encodeFloat64 v =++      let s = Literals.printFloat64 v+      in (Logic.ifElse (Equality.equal s "NaN") (encodeLiteral_javaSpecialFloatExpr "Double" "NaN") (Logic.ifElse (Equality.equal s "Infinity") (encodeLiteral_javaSpecialFloatExpr "Double" "POSITIVE_INFINITY") (Logic.ifElse (Equality.equal s "-Infinity") (encodeLiteral_javaSpecialFloatExpr "Double" "NEGATIVE_INFINITY") (Logic.ifElse (Equality.equal s "-0.0") (encodeLiteral_javaParseDouble "-0.0") (encodeLiteral_litExp (Syntax.LiteralFloatingPoint (Syntax.FloatingPointLiteral v)))))))++encodeLiteral_encodeInteger :: Model.IntegerValue -> Syntax.Expression+encodeLiteral_encodeInteger i =+    case i of+      Model.IntegerValueBigint v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigInteger") Nothing) [+        encodeLiteral (Model.LiteralString (Literals.printBigint v0))] Nothing+      Model.IntegerValueInt8 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeByte)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int8ToBigint v0))))+      Model.IntegerValueInt16 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeShort)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int16ToBigint v0))))+      Model.IntegerValueInt32 v0 -> encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int32ToBigint v0)))+      Model.IntegerValueInt64 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeLong)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.int64ToBigint v0))))+      Model.IntegerValueUint8 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeShort)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.uint8ToBigint v0))))+      Model.IntegerValueUint16 v0 -> encodeLiteral_litExp (Syntax.LiteralCharacter v0)+      Model.IntegerValueUint32 v0 -> encodeLiteral_primCast (Syntax.PrimitiveTypeNumeric (Syntax.NumericTypeIntegral Syntax.IntegralTypeLong)) (encodeLiteral_litExp (Syntax.LiteralInteger (Syntax.IntegerLiteral (Literals.uint32ToBigint v0))))+      Model.IntegerValueUint64 v0 -> Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "java.math.BigInteger") Nothing) [+        encodeLiteral (Model.LiteralString (Literals.printBigint (Literals.uint64ToBigint v0)))] Nothing++encodeLiteral_javaParseDouble :: String -> Syntax.Expression+encodeLiteral_javaParseDouble value =+    Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "Double") (Syntax.Identifier "parseDouble") [+      encodeLiteral (Model.LiteralString value)])++encodeLiteral_javaSpecialFloatExpr :: String -> String -> Syntax.Expression+encodeLiteral_javaSpecialFloatExpr className fieldName =+    Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {+      Syntax.expressionNameQualifier = (Just (Syntax.AmbiguousName [+        Syntax.Identifier className])),+      Syntax.expressionNameIdentifier = (Syntax.Identifier fieldName)})++encodeLiteral_litExp :: Syntax.Literal -> Syntax.Expression+encodeLiteral_litExp l = Utils.javaLiteralToJavaExpression l++encodeLiteral_primCast :: Syntax.PrimitiveType -> Syntax.Expression -> Syntax.Expression+encodeLiteral_primCast pt expr =+    Utils.javaCastExpressionToJavaExpression (Utils.javaCastPrimitive pt (Utils.javaExpressionToJavaUnaryExpression expr))++encodeNullaryConstant :: t0 -> t1 -> Model.Term -> t2 -> t3 -> Either Errors.Error t4+encodeNullaryConstant env typ funTerm cx g =+    Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "unexpected " (Strings.concat2 "nullary function" (Strings.concat2 " in " (PrintModel.term funTerm))))))++encodeNullaryConstant_typeArgsFromReturnType :: JavaEnvironment.Aliases -> Model.Type -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]+encodeNullaryConstant_typeArgsFromReturnType aliases t cx g =+    case (Strip.deannotateType t) of+      Model.TypeSet v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jst -> Eithers.bind (Utils.javaTypeToJavaReferenceType jst cx) (\rt -> Right [+        Syntax.TypeArgumentReference rt]))+      Model.TypeList v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jlt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jlt cx) (\rt -> Right [+        Syntax.TypeArgumentReference rt]))+      Model.TypeOptional v0 -> Eithers.bind (encodeType aliases Sets.empty v0 cx g) (\jmt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jmt cx) (\rt -> Right [+        Syntax.TypeArgumentReference rt]))+      Model.TypeMap v0 -> Eithers.bind (encodeType aliases Sets.empty (Model.mapTypeKeys v0) cx g) (\jkt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jkt cx) (\rk -> Eithers.bind (encodeType aliases Sets.empty (Model.mapTypeValues v0) cx g) (\jvt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jvt cx) (\rv -> Right [+        Syntax.TypeArgumentReference rk,+        (Syntax.TypeArgumentReference rv)]))))+      _ -> Right []++encodeNullaryPrimitiveByName :: JavaEnvironment.JavaEnvironment -> Model.Type -> Model.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeNullaryPrimitiveByName env typ name cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+      in (Eithers.bind (encodeNullaryConstant_typeArgsFromReturnType aliases typ cx g) (\targs -> Logic.ifElse (Lists.isEmpty targs) (+        let header = Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (elementJavaIdentifier True False aliases name))+        in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+          Syntax.methodInvocationHeader = header,+          Syntax.methodInvocationArguments = []})))) (+        let fullName = Syntax.unIdentifier (elementJavaIdentifier True False aliases name)+            parts = Strings.splitOn "." fullName+            className = Syntax.Identifier (Strings.join "." (Optionals.withDefault [] (Lists.init parts)))+            methodName = Syntax.Identifier (Optionals.withDefault fullName (Lists.last parts))+        in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs className methodName targs []))))))++encodeTerm :: JavaEnvironment.JavaEnvironment -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeTerm env term cx g = encodeTermInternal env [] [] term cx g++encodeTermDefinition :: JavaEnvironment.JavaEnvironment -> Packaging.TermDefinition -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.InterfaceMemberDeclarationWithComments+encodeTermDefinition env tdef cx g =++      let name = Packaging.termDefinitionName tdef+          term0 = Packaging.termDefinitionBody tdef+      in (Eithers.bind (Annotations.getTermDescription cx g term0) (\mDoc ->+        let ts =+                Optionals.match (Packaging.termDefinitionSignature tdef) (Model.TypeScheme {+                  Model.typeSchemeVariables = [],+                  Model.typeSchemeBody = (Model.TypeVariable (Model.Name "hydra.core.model.Unit")),+                  Model.typeSchemeConstraints = Maps.empty}) (\sig -> Scoping.termSignatureToTypeScheme sig)+            term = Variables.unshadowVariables term0+        in (Eithers.bind (analyzeJavaFunction env term cx g) (\fs ->+          let schemeVars = Lists.filter (\v -> isSimpleName v) (Model.typeSchemeVariables ts)+              termVars = Typing.functionStructureTypeParams fs+              schemeTypeVars = collectTypeVars (Model.typeSchemeBody ts)+              usedSchemeVars = Lists.filter (\v -> Sets.member v schemeTypeVars) schemeVars+              tparams = Logic.ifElse (Lists.isEmpty usedSchemeVars) termVars usedSchemeVars+              params = Typing.functionStructureParams fs+              bindings = Typing.functionStructureBindings fs+              body = Typing.functionStructureBody fs+              doms = Typing.functionStructureDomains fs+              env2 = Typing.functionStructureEnvironment fs+              schemeType = Model.typeSchemeBody ts+              numParams = Lists.length params+              peelResult = peelDomainsAndCod numParams schemeType+              schemeDoms = Pairs.first peelResult+              cod = Pairs.second peelResult+              schemeVarSet = Sets.fromList tparams+          in (Eithers.bind (Logic.ifElse (Lists.isEmpty tparams) (Right Maps.empty) (buildSubstFromAnnotations schemeVarSet term cx g)) (\typeVarSubst ->+            let overgenSubst = detectAccumulatorUnification schemeDoms cod tparams+                overgenVarSubst =+                        Maps.fromList (Optionals.givens (Lists.map (\entry ->+                          let k = Pairs.first entry+                              v = Pairs.second entry+                          in case v of+                            Model.TypeVariable v0 -> Just (k, v0)+                            _ -> Nothing) (Maps.toList overgenSubst)))+                fixedCod = Logic.ifElse (Maps.isEmpty overgenSubst) cod (substituteTypeVarsWithTypes overgenSubst cod)+                fixedDoms =+                        Logic.ifElse (Maps.isEmpty overgenSubst) schemeDoms (Lists.map (\d -> substituteTypeVarsWithTypes overgenSubst d) schemeDoms)+                fixedTparams =+                        Logic.ifElse (Maps.isEmpty overgenSubst) tparams (Lists.filter (\v -> Logic.not (Maps.member v overgenSubst)) tparams)+                constraints = Model.typeSchemeConstraints ts+                jparams = Lists.map (\v -> Utils.javaTypeParameter (Formatting.capitalize (Model.unName v))) fixedTparams+                aliases2base = JavaEnvironment.javaEnvironmentAliases env2+                trustedVars = Sets.unions (Lists.map (\d -> collectTypeVars d) (Lists.concat2 fixedDoms [+                      fixedCod]))+                fixedSchemeVarSet = Sets.fromList fixedTparams+                aliases2 =+                        JavaEnvironment.Aliases {+                          JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases2base),+                          JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases2base),+                          JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases2base),+                          JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases2base),+                          JavaEnvironment.aliasesInScopeTypeParams = fixedSchemeVarSet,+                          JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases2base),+                          JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases2base),+                          JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases2base),+                          JavaEnvironment.aliasesLambdaVars = (Sets.union (JavaEnvironment.aliasesLambdaVars aliases2base) (Sets.fromList params)),+                          JavaEnvironment.aliasesTypeVarSubst = (Maps.union overgenVarSubst typeVarSubst),+                          JavaEnvironment.aliasesTrustedTypeVars = (Sets.intersection trustedVars fixedSchemeVarSet),+                          JavaEnvironment.aliasesMethodCodomain = (Just fixedCod),+                          JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases2base)}+                env2WithTypeParams =+                        JavaEnvironment.JavaEnvironment {+                          JavaEnvironment.javaEnvironmentAliases = aliases2,+                          JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env2)}+            in (Eithers.bind (bindingsToStatements env2WithTypeParams bindings cx g) (\bindResult ->+              let bindingStmts = Pairs.first bindResult+                  env3 = Pairs.second bindResult+              in (Eithers.bind (Logic.ifElse (Maps.isEmpty overgenSubst) (Right body) (applyOvergenSubstToTermAnnotations overgenSubst body cx g)) (\body_ ->+                let annotatedBody = propagateTypesInAppChain fixedCod fixedCod body_+                in (Eithers.bind (Eithers.mapList (\pair -> Eithers.bind (encodeType aliases2 Sets.empty (Pairs.first pair) cx g) (\jdom -> Right (Utils.javaTypeToJavaFormalParameter jdom (Pairs.second pair)))) (Lists.zip fixedDoms params)) (\jformalParams -> Eithers.bind (encodeType aliases2 Sets.empty fixedCod cx g) (\jcod ->+                  let result = Utils.javaTypeToJavaResult jcod+                      mods = [+                            Syntax.InterfaceMethodModifierStatic]+                      jname = Utils.sanitizeJavaName (Formatting.decapitalize (CoreNames.localNameOf name))+                      isTCO = Logic.and (Logic.not (Lists.isEmpty params)) (Analysis.isSelfTailRecursive name body)+                  in (Eithers.bind (Logic.ifElse isTCO (+                    let tcoSuffix = "_tco"+                        snapshotNames = Lists.map (\p -> Model.Name (Strings.concat2 (Model.unName p) tcoSuffix)) params+                        tcoVarRenames = Maps.fromList (Lists.zip params snapshotNames)+                        snapshotDecls =+                                Lists.map (\pair -> Utils.finalVarDeclarationStatement (Utils.variableToJavaIdentifier (Pairs.second pair)) (Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier (Pairs.first pair)))) (Lists.zip params snapshotNames)+                        tcoBody =+                                Logic.ifElse (Lists.isEmpty bindings) annotatedBody (Model.TermLet (Model.Let {+                                  Model.letBindings = bindings,+                                  Model.letBody = annotatedBody}))+                    in (Eithers.bind (encodeTermTCO env2WithTypeParams name params tparams tcoVarRenames 0 tcoBody cx g) (\tcoStmts ->+                      let whileBodyStmts = Lists.concat2 snapshotDecls tcoStmts+                          whileBodyBlock =+                                  Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementBlock (Syntax.Block whileBodyStmts))+                          noCond = Nothing+                          whileStmt =+                                  Syntax.BlockStatementStatement (Syntax.StatementWhile (Syntax.WhileStatement {+                                    Syntax.whileStatementCond = noCond,+                                    Syntax.whileStatementBody = whileBodyBlock}))+                      in (Right [+                        whileStmt])))) (Eithers.bind (encodeTerm env3 annotatedBody cx g) (\jbody ->+                    let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))+                    in (Right (Lists.concat2 bindingStmts [+                      returnSt]))))) (\methodBody ->+                    let imdMember = Utils.interfaceMethodDeclaration mods jparams jname jformalParams result (Just methodBody)+                    in (Right (Optionals.match mDoc (noInterfaceComment imdMember) (\doc -> withInterfaceCommentString doc imdMember))))))))))))))))))++encodeTermInternal :: JavaEnvironment.JavaEnvironment -> [M.Map Model.Name Model.Term] -> [Syntax.Type] -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeTermInternal env anns tyapps term cx g0 =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          g = JavaEnvironment.javaEnvironmentGraph env+          encode = \t -> encodeTerm env t cx g+      in case term of+        Model.TermAnnotated v0 -> encodeTermInternal env (Lists.cons (Annotations.getAnnotationMap (Model.annotatedTermAnnotation v0)) anns) tyapps (Model.annotatedTermBody v0) cx g+        Model.TermApplication v0 -> encodeApplication env v0 cx g+        Model.TermEither v0 -> Eithers.bind (Logic.ifElse (Lists.isEmpty tyapps) (Right Nothing) (Eithers.bind (takeTypeArgs "either" 2 tyapps cx g) (\ta -> Right (Just ta)))) (\mtargs ->+          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mEitherType ->+            let branchTypes =+                    Optionals.bind mEitherType (\etyp -> case (Strip.deannotateType etyp) of+                      Model.TypeEither v1 -> Just (Model.eitherTypeLeft v1, (Model.eitherTypeRight v1))+                      _ -> Nothing)+                encodeWithType =+                        \branchType -> \t1 ->+                          let annotated = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ branchType)) t1+                          in (encodeTermInternal env anns [] annotated cx g)+                eitherCall =+                        \methodName -> \expr -> Optionals.match mtargs (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.Either") (Syntax.Identifier methodName) [+                          expr])) (\targs -> Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.Either") (Syntax.Identifier methodName) targs [+                          expr]))+            in (Eithers.either (\term1 -> Eithers.bind (Optionals.match branchTypes (encode term1) (\bt -> encodeWithType (Pairs.first bt) term1)) (\expr -> Right (eitherCall "left" expr))) (\term1 -> Eithers.bind (Optionals.match branchTypes (encode term1) (\bt -> encodeWithType (Pairs.second bt) term1)) (\expr -> Right (eitherCall "right" expr))) v0))))+        Model.TermLambda _ -> encodeFunctionFormTerm env anns term cx g+        Model.TermProject _ -> encodeFunctionFormTerm env anns term cx g+        Model.TermCases _ -> encodeFunctionFormTerm env anns term cx g+        Model.TermUnwrap _ -> encodeFunctionFormTerm env anns term cx g+        Model.TermLet v0 ->+          let bindings = Model.letBindings v0+              body = Model.letBody v0+          in (Logic.ifElse (Lists.isEmpty bindings) (encodeTermInternal env anns [] body cx g) (Eithers.bind (bindingsToStatements env bindings cx g) (\bindResult ->+            let bindingStmts = Pairs.first bindResult+                env2 = Pairs.second bindResult+            in (Eithers.bind (encodeTermInternal env2 anns [] body cx g) (\jbody ->+              let returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jbody))+                  block = Syntax.Block (Lists.concat2 bindingStmts [+                        returnSt])+                  nullaryLambda =+                          Syntax.ExpressionLambda (Syntax.LambdaExpression {+                            Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),+                            Syntax.lambdaExpressionBody = (Syntax.LambdaBodyBlock block)})+                  combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+                  g2 = JavaEnvironment.javaEnvironmentGraph env2+                  aliases2 = JavaEnvironment.javaEnvironmentAliases env2+              in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g2 body) (\t -> Right t)) (\letType -> Eithers.bind (encodeType aliases2 Sets.empty letType cx g) (\jLetType -> Eithers.bind (Utils.javaTypeToJavaReferenceType jLetType cx) (\rt ->+                let supplierRt =+                        Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Utils.javaClassType [+                          rt] JavaNames.javaUtilFunctionPackageName "Supplier"))+                    castExpr =+                            Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression supplierRt (Utils.javaExpressionToJavaUnaryExpression nullaryLambda))+                in (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Right (Utils.javaExpressionToJavaPrimary castExpr))) (Syntax.Identifier "get") [])))))))))))))+        Model.TermList v0 -> Logic.ifElse (Lists.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.ConsList") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "list" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.ConsList") (Syntax.Identifier "empty") targs []))))) (Eithers.bind (Eithers.mapList encode v0) (\jels -> Eithers.bind (collectionTypeArgs "list" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.ConsList") (Syntax.Identifier "of") targs jels)))))+        Model.TermLiteral v0 -> Right (encodeLiteral v0)+        Model.TermMap v0 -> Logic.ifElse (Maps.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.PersistentMap") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "map" 2 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.PersistentMap") (Syntax.Identifier "empty") targs []))))) (Eithers.bind (Eithers.mapList encode (Maps.keys v0)) (\jkeys -> Eithers.bind (Eithers.mapList encode (Maps.elems v0)) (\jvals ->+          let pairExprs =+                  Lists.map (\kv -> Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "java.util.Map") (Syntax.Identifier "entry") [+                    Pairs.first kv,+                    (Pairs.second kv)])) (Lists.zip jkeys jvals)+          in (Eithers.bind (collectionTypeArgs "map" 2 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.PersistentMap") (Syntax.Identifier "ofEntries") targs pairExprs)))))))+        Model.TermOptional v0 -> Optionals.match v0 (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.Optional") (Syntax.Identifier "none") []))) (Eithers.bind (takeTypeArgs "optional" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.Optional") (Syntax.Identifier "none") targs []))))) (\term1 -> Eithers.bind (encode term1) (\expr -> Eithers.bind (collectionTypeArgs "optional" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.Optional") (Syntax.Identifier "given") targs [+          expr])))))+        Model.TermPair v0 -> Eithers.bind (encode (Pairs.first v0)) (\jterm1 -> Eithers.bind (encode (Pairs.second v0)) (\jterm2 -> Eithers.bind (Logic.ifElse (Lists.isEmpty tyapps) (Right Nothing) (Eithers.bind (Eithers.mapList (\jt -> Utils.javaTypeToJavaReferenceType jt cx) tyapps) (\rts -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) rts)))))) (\mtargs -> Right (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "hydra.core.overlay.java.util.Pair") mtargs) [+          jterm1,+          jterm2] Nothing))))+        Model.TermRecord v0 ->+          let recName = Model.recordTypeName v0+              mRecordType = Eithers.either (\_ -> Nothing) (\t -> Just t) (Resolution.requireType cx g recName)+              strippedRecTyp = Optionals.map (\recTyp -> stripForalls (Strip.deannotateType recTyp)) mRecordType+              mFieldTypeMap =+                      Optionals.bind strippedRecTyp (\bodyTyp -> case bodyTyp of+                        Model.TypeRecord v1 -> Just (Maps.fromList (Lists.map (\ft -> (Model.fieldTypeName ft, (Model.fieldTypeType ft))) v1))+                        _ -> Nothing)+              combinedAnnsRec = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnnsRec)) (\mAnnotType ->+            let mTypeSubst =+                    Optionals.bind mAnnotType (\annTyp -> Optionals.bind mRecordType (\recTyp ->+                      let args = extractTypeApplicationArgs (Strip.deannotateType annTyp)+                          params = collectForallParams (Strip.deannotateType recTyp)+                      in (Logic.ifElse (Logic.or (Lists.isEmpty args) (Logic.not (Equality.equal (Lists.length args) (Lists.length params)))) Nothing (Just (Maps.fromList (Lists.zip params args))))))+                encodeField =+                        \fld -> Optionals.match mFieldTypeMap (encode (Model.fieldTerm fld)) (\ftmap ->+                          let mftyp = Maps.lookup (Model.fieldName fld) ftmap+                          in (Optionals.match mftyp (encode (Model.fieldTerm fld)) (\ftyp ->+                            let resolvedType = Optionals.match mTypeSubst ftyp (\subst -> applySubstFull subst ftyp)+                                annotatedFieldTerm =+                                        Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ resolvedType)) (Model.fieldTerm fld)+                            in (encodeTermInternal env anns [] annotatedFieldTerm cx g))))+            in (Eithers.bind (Eithers.mapList encodeField (Model.recordFields v0)) (\fieldExprs ->+              let consId = Utils.nameToJavaName aliases recName+              in (Eithers.bind (Logic.ifElse (Logic.not (Lists.isEmpty tyapps)) (Eithers.bind (Eithers.mapList (\jt -> Utils.javaTypeToJavaReferenceType jt cx) tyapps) (\rts -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) rts))))) (+                let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+                in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Optionals.match mtyp (Right Nothing) (\annTyp ->+                  let typeArgs = extractTypeApplicationArgs (Strip.deannotateType annTyp)+                  in (Logic.ifElse (Lists.isEmpty typeArgs) (Right Nothing) (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Utils.javaTypeToJavaReferenceType jt cx)) typeArgs) (\jTypeArgs -> Right (Just (Syntax.TypeArgumentsOrDiamondArguments (Lists.map (\rt -> Syntax.TypeArgumentReference rt) jTypeArgs))))))))))) (\mtargs -> Right (Utils.javaConstructorCall (Utils.javaConstructorName consId mtargs) fieldExprs Nothing)))))))+        Model.TermSet v0 -> Logic.ifElse (Sets.isEmpty v0) (Logic.ifElse (Lists.isEmpty tyapps) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStatic (Syntax.Identifier "hydra.core.overlay.java.util.PersistentSet") (Syntax.Identifier "empty") []))) (Eithers.bind (takeTypeArgs "set" 1 tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.PersistentSet") (Syntax.Identifier "empty") targs []))))) (+          let slist = Sets.toList v0+          in (Eithers.bind (Eithers.mapList encode slist) (\jels -> Eithers.bind (collectionTypeArgs "set" 1 aliases anns tyapps cx g) (\targs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.PersistentSet") (Syntax.Identifier "of") targs jels))))))+        Model.TermTypeLambda v0 -> withTypeLambda env v0 (\env2 ->+          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp ->+            let annotatedBody =+                    Optionals.match mtyp (Model.typeLambdaBody v0) (\t -> case t of+                      Model.TypeForall v1 -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ (Model.forallTypeBody v1))) (Model.typeLambdaBody v0)+                      _ -> Model.typeLambdaBody v0)+            in (encodeTerm env2 annotatedBody cx g))))+        Model.TermInject v0 ->+          let injTypeName = Model.injectionTypeName v0+              injField = Model.injectionField v0+              injFieldName = Model.fieldName injField+              injFieldTerm = Model.fieldTerm injField+              typeId = Syntax.unIdentifier (Utils.nameToJavaName aliases injTypeName)+              consId =+                      Syntax.Identifier (Strings.concat [+                        typeId,+                        ".",+                        (Utils.sanitizeJavaName (Formatting.capitalize (Model.unName injFieldName)))])+          in (Eithers.bind (isFieldUnitType injTypeName injFieldName cx g) (\fieldIsUnit -> Eithers.bind (Logic.ifElse (Logic.or (Predicates.isUnitTerm (Strip.deannotateTerm injFieldTerm)) fieldIsUnit) (Right []) (Eithers.bind (encode injFieldTerm) (\ex -> Right [+            ex]))) (\args -> Right (Utils.javaConstructorCall (Utils.javaConstructorName consId Nothing) args Nothing))))+        Model.TermVariable v0 -> Optionals.match (Maps.lookup v0 (Graph.graphPrimitives g)) (encodeVariable env v0 cx g) (\_ ->+          let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+          in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mt -> Eithers.bind (Optionals.match mt (Checking.typeOfTerm cx g term) (\t -> Right t)) (\typ -> case (Strip.deannotateType typ) of+            Model.TypeFunction v1 -> encodeFunctionPrimitiveByName env (Model.functionTypeDomain v1) (Model.functionTypeCodomain v1) v0 cx g+            _ -> encodeNullaryPrimitiveByName env typ v0 cx g))))+        Model.TermUnit -> Right (Utils.javaLiteralToJavaExpression Syntax.LiteralNull)+        Model.TermWrap v0 -> Eithers.bind (encode (Model.wrappedTermBody v0)) (\jarg -> Right (Utils.javaConstructorCall (Utils.javaConstructorName (Utils.nameToJavaName aliases (Model.wrappedTermTypeName v0)) Nothing) [+          jarg] Nothing))+        Model.TermTypeApplication v0 ->+          let atyp = Model.typeApplicationTermType v0+              body = Model.typeApplicationTermBody v0+          in (Eithers.bind (encodeType aliases Sets.empty atyp cx g) (\jatyp ->+            let combinedAnns = Lists.foldl (\acc -> \m -> Maps.union acc m) Maps.empty anns+            in (Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g combinedAnns)) (\mtyp -> Eithers.bind (Optionals.match mtyp (Checking.typeOfTerm cx g term) (\t -> Right t)) (\typ ->+              let collected0 = collectTypeApps0 body [+                    atyp]+                  innermostBody0 = Pairs.first collected0+                  allTypeArgs0 = Pairs.second collected0+              in (Eithers.bind (correctCastType innermostBody0 allTypeArgs0 typ cx g) (\correctedTyp ->+                let collected = collectTypeApps body [+                      atyp]+                    innermostBody = Pairs.first collected+                    allTypeArgs = Pairs.second collected+                in case innermostBody of+                  Model.TermVariable v1 -> Eithers.bind (classifyDataReference v1 cx g) (\cls -> typeAppNullaryOrHoisted env aliases anns tyapps jatyp body correctedTyp v1 cls allTypeArgs cx g)+                  Model.TermEither v1 -> Logic.ifElse (Equality.equal (Lists.length allTypeArgs) 2) (+                    let eitherBranchTypes =+                            (Optionals.withDefault correctedTyp (Lists.at 0 allTypeArgs), (Optionals.withDefault correctedTyp (Lists.at 1 allTypeArgs)))+                    in (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Utils.javaTypeToJavaReferenceType jt cx)) allTypeArgs) (\jTypeArgs ->+                      let eitherTargs = Lists.map (\rt -> Syntax.TypeArgumentReference rt) jTypeArgs+                          encodeEitherBranch =+                                  \branchType -> \t1 ->+                                    let annotated = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ branchType)) t1+                                    in (encodeTermInternal env anns [] annotated cx g)+                      in (Eithers.either (\term1 -> Eithers.bind (encodeEitherBranch (Pairs.first eitherBranchTypes) term1) (\expr -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.Either") (Syntax.Identifier "left") eitherTargs [+                        expr])))) (\term1 -> Eithers.bind (encodeEitherBranch (Pairs.second eitherBranchTypes) term1) (\expr -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs (Syntax.Identifier "hydra.core.overlay.java.util.Either") (Syntax.Identifier "right") eitherTargs [+                        expr])))) v1)))) (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g)+                  _ -> typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g)))))))+        _ -> Right (encodeLiteral (Model.LiteralString "Unimplemented term variant"))++encodeTermTCO :: JavaEnvironment.JavaEnvironment -> Model.Name -> [Model.Name] -> [Model.Name] -> M.Map Model.Name Model.Name -> Int -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error [Syntax.BlockStatement]+encodeTermTCO env0 funcName paramNames tparams tcoVarRenames tcoDepth term cx g =++      let aliases0 = JavaEnvironment.javaEnvironmentAliases env0+          env =+                  JavaEnvironment.JavaEnvironment {+                    JavaEnvironment.javaEnvironmentAliases = JavaEnvironment.Aliases {+                      JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases0),+                      JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases0),+                      JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases0),+                      JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases0),+                      JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases0),+                      JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases0),+                      JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases0),+                      JavaEnvironment.aliasesVarRenames = (Maps.union tcoVarRenames (JavaEnvironment.aliasesVarRenames aliases0)),+                      JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases0),+                      JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases0),+                      JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases0),+                      JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases0),+                      JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases0)},+                    JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env0)}+          stripped = Strip.deannotateAndDetypeTerm term+          gathered = Analysis.gatherApplications stripped+          gatherArgs = Pairs.first gathered+          gatherFun = Pairs.second gathered+          strippedFun = Strip.deannotateAndDetypeTerm gatherFun+          isSelfCall =+                  case strippedFun of+                    Model.TermVariable v0 -> Equality.equal v0 funcName+                    _ -> False+      in (Logic.ifElse (Logic.and isSelfCall (Equality.equal (Lists.length gatherArgs) (Lists.length paramNames))) (+        let changePairs =+                Lists.filter (\pair -> Logic.not (case (Strip.deannotateAndDetypeTerm (Pairs.second pair)) of+                  Model.TermVariable v0 -> Equality.equal v0 (Pairs.first pair)+                  _ -> False)) (Lists.zip paramNames gatherArgs)+            changedParams = Lists.map Pairs.first changePairs+        in (Eithers.bind (Eithers.mapList (\pair -> encodeTerm env (Pairs.second pair) cx g) changePairs) (\jChangedArgs ->+          let assignments =+                  Lists.map (\pair ->+                    let paramName = Pairs.first pair+                        jArg = Pairs.second pair+                    in (Syntax.BlockStatementStatement (Utils.javaAssignmentStatement (Syntax.LeftHandSideExpressionName (Utils.javaIdentifierToJavaExpressionName (Utils.variableToJavaIdentifier paramName))) jArg))) (Lists.zip changedParams jChangedArgs)+              continueStmt =+                      Syntax.BlockStatementStatement (Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementContinue (Syntax.ContinueStatement Nothing)))+          in (Right (Lists.concat2 assignments [+            continueStmt]))))) (case stripped of+        Model.TermLet v0 ->+          let letBindings = Model.letBindings v0+              letBody = Model.letBody v0+          in (Eithers.bind (bindingsToStatements env letBindings cx g) (\bindResult ->+            let letStmts = Pairs.first bindResult+                envAfterLet = Pairs.second bindResult+            in (Eithers.bind (encodeTermTCO envAfterLet funcName paramNames tparams tcoVarRenames tcoDepth letBody cx g) (\tcoBodyStmts -> Right (Lists.concat2 letStmts tcoBodyStmts)))))+        _ ->+          let gathered2 = Analysis.gatherApplications term+              args2 = Pairs.first gathered2+              body2 = Pairs.second gathered2+          in (Logic.ifElse (Equality.equal (Lists.length args2) 1) (+            let arg = Optionals.withDefault Model.TermUnit (Lists.head args2)+            in case (Strip.deannotateAndDetypeTerm body2) of+              Model.TermCases v0 ->+                let aliases = JavaEnvironment.javaEnvironmentAliases env+                    tname = Model.caseStatementTypeName v0+                    dflt = Model.caseStatementDefault v0+                    cases_ = Model.caseStatementCases v0+                    tnameIsGeneric =+                            Optionals.match (Maps.lookup tname (Graph.graphSchemaTypes g)) False (\ts -> Logic.not (Lists.isEmpty (Model.typeSchemeVariables ts)))+                    domArgs =+                            Logic.ifElse tnameIsGeneric (Lists.map (\tp -> Utils.typeParameterToTypeArgument (Utils.javaTypeParameter (Formatting.capitalize (Model.unName tp)))) tparams) []+                in (Eithers.bind (encodeTerm env arg cx g) (\jArgRaw ->+                  let depthSuffix = Logic.ifElse (Equality.equal tcoDepth 0) "" (Literals.printInt32 tcoDepth)+                      matchVarId =+                              Utils.javaIdentifier (Strings.concat [+                                "_tco_match_",+                                (Formatting.decapitalize (CoreNames.localNameOf tname)),+                                depthSuffix])+                      matchDecl = Utils.varDeclarationStatement matchVarId jArgRaw+                      jArg = Utils.javaIdentifierToJavaExpression matchVarId+                  in (Eithers.bind (Eithers.mapList (\field ->+                    let fieldName = Model.caseAlternativeName field+                        variantRefType =+                                Utils.nameToJavaReferenceType aliases True domArgs tname (Just (Formatting.capitalize (Model.unName fieldName)))+                        variantRawType = Utils.nameToJavaReferenceType aliases True [] tname (Just (Formatting.capitalize (Model.unName fieldName)))+                    in case (Strip.deannotateTerm (Model.caseAlternativeHandler field)) of+                      Model.TermLambda v1 -> withLambda env v1 (\env2 ->+                        let lambdaParam = Model.lambdaParameter v1+                            branchBody = Model.lambdaBody v1+                            env3 = insertBranchVar lambdaParam env2+                            varId = Utils.variableToJavaIdentifier lambdaParam+                            castExpr =+                                    Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression variantRefType (Utils.javaExpressionToJavaUnaryExpression jArg))+                            localDecl = Utils.varDeclarationStatement varId castExpr+                            isBranchTailCall = Analysis.isTailRecursiveInTailPosition funcName branchBody+                        in (Eithers.bind (Logic.ifElse isBranchTailCall (encodeTermTCO env3 funcName paramNames tparams tcoVarRenames (Math.add tcoDepth 1) branchBody cx g) (Eithers.bind (analyzeJavaFunction env3 branchBody cx g) (\fs ->+                          let bindings = Typing.functionStructureBindings fs+                              innerBody = Typing.functionStructureBody fs+                              env4 = Typing.functionStructureEnvironment fs+                          in (Eithers.bind (bindingsToStatements env4 bindings cx g) (\bindResult ->+                            let bindingStmts = Pairs.first bindResult+                                env5 = Pairs.second bindResult+                            in (Eithers.bind (encodeTerm env5 innerBody cx g) (\jret ->+                              let returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))+                              in (Right (Lists.concat2 bindingStmts [+                                returnStmt]))))))))) (\bodyStmts ->+                          let relExpr =+                                  Utils.javaInstanceOf (Utils.javaUnaryExpressionToJavaRelationalExpression (Utils.javaExpressionToJavaUnaryExpression jArg)) variantRawType+                              condExpr = Utils.javaRelationalExpressionToJavaExpression relExpr+                              blockStmts = Lists.cons localDecl bodyStmts+                              ifBody = Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementBlock (Syntax.Block blockStmts))+                          in (Right (Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {+                            Syntax.ifThenStatementExpression = condExpr,+                            Syntax.ifThenStatementStatement = ifBody})))))))+                      _ -> Left (Errors.ErrorOther (Errors.OtherError "TCO: case branch is not a lambda"))) cases_) (\ifBlocks -> Eithers.bind (Optionals.match dflt (Right [+                    Syntax.BlockStatementStatement (Utils.javaThrowIllegalStateException [+                      Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions [+                        Utils.javaStringMultiplicativeExpression "Non-exhaustive patterns when matching"])])]) (\d -> Eithers.bind (encodeTerm env d cx g) (\dExpr -> Right [+                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just dExpr))]))) (\defaultStmt -> Right (Lists.concat [+                    [+                      matchDecl],+                    ifBlocks,+                    defaultStmt]))))))+              _ -> Eithers.bind (encodeTerm env term cx g) (\expr -> Right [+                Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just expr))])) (Eithers.bind (encodeTerm env term cx g) (\expr -> Right [+            Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just expr))])))))++encodeType :: JavaEnvironment.Aliases -> S.Set Model.Name -> Model.Type -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Type+encodeType aliases boundVars t cx g =++      let inScopeTypeParams = JavaEnvironment.aliasesInScopeTypeParams aliases+          typeVarSubst = JavaEnvironment.aliasesTypeVarSubst aliases+      in case (Strip.deannotateType t) of+        Model.TypeApplication v0 -> Eithers.bind (encodeType aliases boundVars (Model.applicationTypeFunction v0) cx g) (\jlhs -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.applicationTypeArgument v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jrhs -> Utils.addJavaTypeParameter jrhs jlhs cx))+        Model.TypeFunction v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.functionTypeDomain v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jdom -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.functionTypeCodomain v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jcod -> Right (Utils.javaRefType [+          jdom,+          jcod] JavaNames.javaUtilFunctionPackageName "Function")))+        Model.TypeForall v0 -> Eithers.bind (encodeType aliases (Sets.insert (Model.forallTypeParameter v0) boundVars) (Model.forallTypeBody v0) cx g) (\jbody -> Utils.addJavaTypeParameter (Utils.javaTypeVariable (Model.unName (Model.forallTypeParameter v0))) jbody cx)+        Model.TypeList v0 -> Eithers.bind (encodeType aliases boundVars v0 cx g) (\jet -> Eithers.bind (Eithers.bind (Right jet) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\rt -> Right (Utils.javaRefType [+          rt] JavaNames.javaUtilPackageName "List")))+        Model.TypeEffect v0 -> encodeType aliases boundVars v0 cx g+        Model.TypeLiteral v0 -> encodeLiteralType v0 cx g+        Model.TypeEither v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.eitherTypeLeft v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jlt -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.eitherTypeRight v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jrt -> Right (Utils.javaRefType [+          jlt,+          jrt] JavaNames.hydraUtilPackageName "Either")))+        Model.TypeMap v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.mapTypeKeys v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jkt -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.mapTypeValues v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jvt -> Right (Utils.javaRefType [+          jkt,+          jvt] JavaNames.javaUtilPackageName "Map")))+        Model.TypePair v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.pairTypeFirst v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jfirst -> Eithers.bind (Eithers.bind (encodeType aliases boundVars (Model.pairTypeSecond v0) cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jsecond -> Right (Utils.javaRefType [+          jfirst,+          jsecond] JavaNames.hydraUtilPackageName "Pair")))+        Model.TypeUnit -> Right (Utils.javaRefType [] JavaNames.javaLangPackageName "Void")+        Model.TypeRecord v0 -> Logic.ifElse (Lists.isEmpty v0) (Right (Utils.javaRefType [] JavaNames.javaLangPackageName "Void")) (Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous record type")))+        Model.TypeOptional v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars v0 cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jot -> Right (Utils.javaRefType [+          jot] JavaNames.hydraUtilPackageName "Optional"))+        Model.TypeSet v0 -> Eithers.bind (Eithers.bind (encodeType aliases boundVars v0 cx g) (\jt_ -> Utils.javaTypeToJavaReferenceType jt_ cx)) (\jst -> Right (Utils.javaRefType [+          jst] JavaNames.javaUtilPackageName "Set"))+        Model.TypeUnion _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous union type"))+        Model.TypeVariable v0 ->+          let name = Optionals.withDefault v0 (Maps.lookup v0 typeVarSubst)+          in (Eithers.bind (encodeType_resolveIfTypedef aliases boundVars inScopeTypeParams name cx g) (\resolved -> Optionals.match resolved (Right (Logic.ifElse (Logic.or (Sets.member name boundVars) (Sets.member name inScopeTypeParams)) (Syntax.TypeReference (Utils.javaTypeVariable (Model.unName name))) (Logic.ifElse (isLambdaBoundVariable name) (Syntax.TypeReference (Utils.javaTypeVariable (Model.unName name))) (Logic.ifElse (isUnresolvedInferenceVar name) (Syntax.TypeReference (Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Utils.javaClassType [] JavaNames.javaLangPackageName "Object")))) (Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True [] name Nothing)))))) (\resolvedType -> encodeType aliases boundVars resolvedType cx g)))+        Model.TypeWrap _ -> Left (Errors.ErrorOther (Errors.OtherError "unexpected anonymous wrap type"))+        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "can't encode unsupported type in Java: " (PrintModel.type_ t))))++encodeTypeDefinition :: Syntax.PackageDeclaration -> JavaEnvironment.Aliases -> Packaging.TypeDefinition -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (Model.Name, Syntax.CompilationUnit)+encodeTypeDefinition pkg aliases tdef cx g =++      let name = Packaging.typeDefinitionName tdef+          typ = Model.typeSchemeBody (Packaging.typeDefinitionBody tdef)+          serializable = isSerializableJavaType typ+          imports =+                  Logic.ifElse serializable [+                    Syntax.ImportDeclarationSingleType (Syntax.SingleTypeImportDeclaration (Utils.javaTypeName (Syntax.Identifier "java.io.Serializable")))] []+      in (Eithers.bind (toClassDecl False serializable aliases [] name typ cx g) (\decl -> Eithers.bind (Annotations.getTypeDescription cx g typ) (\comment ->+        let tdecl =+                Syntax.TopLevelClassOrInterfaceDeclarationWithComments {+                  Syntax.topLevelClassOrInterfaceDeclarationWithCommentsValue = (Syntax.TopLevelClassOrInterfaceDeclarationClass decl),+                  Syntax.topLevelClassOrInterfaceDeclarationWithCommentsComments = comment}+        in (Right (+          name,+          (Syntax.CompilationUnitOrdinary (Syntax.OrdinaryCompilationUnit {+            Syntax.ordinaryCompilationUnitPackage = (Just pkg),+            Syntax.ordinaryCompilationUnitImports = imports,+            Syntax.ordinaryCompilationUnitTypes = [+              tdecl]})))))))++encodeType_resolveIfTypedef :: t0 -> S.Set Model.Name -> S.Set Model.Name -> Model.Name -> t1 -> Graph.Graph -> Either t2 (Maybe Model.Type)+encodeType_resolveIfTypedef aliases boundVars inScopeTypeParams name cx g =+    Logic.ifElse (Logic.or (Sets.member name boundVars) (Sets.member name inScopeTypeParams)) (Right Nothing) (Logic.ifElse (isLambdaBoundVariable name) (Right Nothing) (+      let schemaTypes = Graph.graphSchemaTypes g+      in (Optionals.match (Maps.lookup name schemaTypes) (Right Nothing) (\ts -> Logic.ifElse (Logic.not (Lists.isEmpty (Model.typeSchemeVariables ts))) (Right Nothing) (case (Strip.deannotateType (Model.typeSchemeBody ts)) of+        Model.TypeRecord _ -> Right Nothing+        Model.TypeUnion _ -> Right Nothing+        Model.TypeWrap _ -> Right Nothing+        _ -> Right (Just (Model.typeSchemeBody ts)))))))++encodeVariable :: JavaEnvironment.JavaEnvironment -> Model.Name -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeVariable env name cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          resolvedName = Utils.lookupJavaVarName aliases name+          jid = Utils.javaIdentifier (Model.unName resolvedName)+      in (Logic.ifElse (Sets.member name (JavaEnvironment.aliasesBranchVars aliases)) (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {+        Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary (Utils.javaIdentifierToJavaExpression jid))),+        Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)}))) (Logic.ifElse (Logic.and (Equality.equal name (Model.Name (Strings.concat [+        JavaNames.instanceName,+        "_",+        JavaNames.valueFieldName]))) (isRecursiveVariable aliases name)) (+        let instanceExpr = Utils.javaIdentifierToJavaExpression (Utils.javaIdentifier JavaNames.instanceName)+        in (Right (Utils.javaFieldAccessToJavaExpression (Syntax.FieldAccess {+          Syntax.fieldAccessQualifier = (Syntax.FieldAccess_QualifierPrimary (Utils.javaExpressionToJavaPrimary instanceExpr)),+          Syntax.fieldAccessIdentifier = (Utils.javaIdentifier JavaNames.valueFieldName)})))) (Logic.ifElse (Logic.and (isRecursiveVariable aliases name) (Logic.not (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)))) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {+        Syntax.expressionNameQualifier = Nothing,+        Syntax.expressionNameIdentifier = jid}))) (Syntax.Identifier JavaNames.getMethodName) []))) (Logic.ifElse (Logic.and (Sets.member name (JavaEnvironment.aliasesThunkedVars aliases)) (Logic.not (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)))) (Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {+        Syntax.expressionNameQualifier = Nothing,+        Syntax.expressionNameIdentifier = jid}))) (Syntax.Identifier JavaNames.getMethodName) []))) (Logic.ifElse (isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)) (+        let actualName = findMatchingLambdaVar name (JavaEnvironment.aliasesLambdaVars aliases)+            resolvedActual = Utils.lookupJavaVarName aliases actualName+        in (Right (Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier resolvedActual)))) (Logic.ifElse (Sets.member name (JavaEnvironment.aliasesInScopeJavaVars aliases)) (Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases resolvedName))) (Eithers.bind (classifyDataReference name cx g) (\cls -> case cls of+        JavaEnvironment.JavaSymbolClassHoistedLambda v0 -> encodeVariable_hoistedLambdaCase aliases name v0 cx g+        JavaEnvironment.JavaSymbolClassLocalVariable -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases resolvedName))+        JavaEnvironment.JavaSymbolClassConstant -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False False aliases name))+        JavaEnvironment.JavaSymbolClassNullaryFunction -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (elementJavaIdentifier False False aliases name) []))+        JavaEnvironment.JavaSymbolClassUnaryFunction -> Right (Utils.javaIdentifierToJavaExpression (elementJavaIdentifier False True aliases name))))))))))++encodeVariable_buildCurried :: [Model.Name] -> Syntax.Expression -> Syntax.Expression+encodeVariable_buildCurried params inner =+    Optionals.withDefault inner (Optionals.map (\p -> Utils.javaLambda (Pairs.first p) (encodeVariable_buildCurried (Pairs.second p) inner)) (Lists.uncons params))++encodeVariable_hoistedLambdaCase :: JavaEnvironment.Aliases -> Model.Name -> Int -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Expression+encodeVariable_hoistedLambdaCase aliases name arity cx g =++      let paramNames = Lists.map (\i -> Model.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 arity)+          paramExprs = Lists.map (\pn -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier pn)) paramNames+          call =+                  Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (elementJavaIdentifier False False aliases name) paramExprs)+          lam = encodeVariable_buildCurried paramNames call+      in (Eithers.bind (Right (Lexical.lookupBinding g name)) (\mel -> Optionals.match mel (Right lam) (\el -> Optionals.match (Model.bindingTypeScheme el) (Right lam) (\ts ->+        let typ = Model.typeSchemeBody ts+        in (Eithers.bind (encodeType aliases Sets.empty typ cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression lam))))))))))++eqClause :: String -> Model.FieldType -> Syntax.InclusiveOrExpression+eqClause tmpName ft =++      let fname = Model.unName (Model.fieldTypeName ft)+          ftype = Model.fieldTypeType ft+      in (Logic.ifElse (isBinaryType ftype) (arraysEqualsClause tmpName fname) (Logic.ifElse (isBigIntegerType ftype) (compareToZeroClause tmpName fname) (equalsClause tmpName fname)))++equalsClause :: String -> String -> Syntax.InclusiveOrExpression+equalsClause tmpName fname =++      let thisArg =+              Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))+          otherArg =+                  Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Utils.javaIdentifier tmpName) (Utils.javaIdentifier fname))+          header =+                  Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                    Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Objects"))),+                    Syntax.methodInvocation_ComplexTypeArguments = [],+                    Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.equalsMethodName)})+      in (Utils.javaPostfixExpressionToJavaInclusiveOrExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {+        Syntax.methodInvocationHeader = header,+        Syntax.methodInvocationArguments = [+          thisArg,+          otherArg]})))++explicitTypeArguments :: [Syntax.TypeArgument] -> Syntax.TypeArgumentsOrDiamond+explicitTypeArguments args = Syntax.TypeArgumentsOrDiamondArguments args++extractArgType :: t0 -> Model.Type -> Model.Type+extractArgType _lhs typ =+    case typ of+      Model.TypeApplication v0 -> case (Model.applicationTypeFunction v0) of+        Model.TypeApplication _ -> Model.applicationTypeArgument v0+        _ -> typ+      _ -> typ++extractDirectReturn :: S.Set Model.Name -> Model.Type -> [(Model.Name, Model.Name)]+extractDirectReturn tparamSet t = extractDirectReturn_go tparamSet t++extractDirectReturn_go :: S.Set Model.Name -> Model.Type -> [(Model.Name, Model.Name)]+extractDirectReturn_go tparamSet t =+    case (Strip.deannotateType t) of+      Model.TypeFunction v0 ->+        let dom = Strip.deannotateType (Model.functionTypeDomain v0)+            cod = Model.functionTypeCodomain v0+        in case dom of+          Model.TypeVariable v1 -> Logic.ifElse (Sets.member v1 tparamSet) (case (Strip.deannotateType cod) of+            Model.TypeFunction v2 ->+              let midArg = Strip.deannotateType (Model.functionTypeDomain v2)+                  retPart = Strip.deannotateType (Model.functionTypeCodomain v2)+              in case midArg of+                Model.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [] (case retPart of+                  Model.TypeVariable v4 -> Logic.ifElse (Sets.member v4 tparamSet) [+                    (v1, v4)] []+                  _ -> [])+                _ -> case retPart of+                  Model.TypeVariable v3 -> Logic.ifElse (Sets.member v3 tparamSet) [+                    (v1, v3)] []+                  _ -> []+            _ -> []) (extractDirectReturn_go tparamSet cod)+          _ -> extractDirectReturn_go tparamSet cod+      _ -> []++extractInOutPair :: Model.Type -> [(Model.Name, Model.Name)]+extractInOutPair t =+    case (Strip.deannotateType t) of+      Model.TypeFunction v0 -> case (Strip.deannotateType (Model.functionTypeDomain v0)) of+        Model.TypeVariable v1 ->+          let retType = unwrapReturnType (Model.functionTypeCodomain v0)+          in case (Strip.deannotateType retType) of+            Model.TypePair v2 -> case (Strip.deannotateType (Model.pairTypeFirst v2)) of+              Model.TypeVariable v3 -> [+                (v1, v3)]+              _ -> []+            _ -> []+        _ -> []+      _ -> []++extractTypeApplicationArgs :: Model.Type -> [Model.Type]+extractTypeApplicationArgs typ = Lists.reverse (extractTypeApplicationArgs_go typ)++extractTypeApplicationArgs_go :: Model.Type -> [Model.Type]+extractTypeApplicationArgs_go t =+    case t of+      Model.TypeApplication v0 -> Lists.cons (Model.applicationTypeArgument v0) (extractTypeApplicationArgs_go (Model.applicationTypeFunction v0))+      _ -> []++fieldToStringPart :: Model.FieldType -> [Syntax.MultiplicativeExpression]+fieldToStringPart f =++      let fname = Model.unName (Model.fieldTypeName f)+          nameLiteral = Utils.javaStringMultiplicativeExpression (Strings.concat2 fname "=")+          valueExpr =+                  Syntax.MultiplicativeExpressionUnary (Utils.javaExpressionToJavaUnaryExpression (Utils.javaExpressionNameToJavaExpression (Utils.fieldExpression (Syntax.Identifier "this") (Utils.javaIdentifier fname))))+      in [+        Utils.javaStringMultiplicativeExpression ", ",+        nameLiteral,+        valueExpr]++fieldTypeToFormalParam :: JavaEnvironment.Aliases -> Model.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.FormalParameter+fieldTypeToFormalParam aliases ft cx g =+    Eithers.bind (encodeType aliases Sets.empty (Model.fieldTypeType ft) cx g) (\jt -> Right (Utils.javaTypeToJavaFormalParameter jt (Model.fieldTypeName ft)))++filterByFlags :: [t0] -> [Bool] -> [t0]+filterByFlags xs flags = Lists.map (\p -> Pairs.first p) (Lists.filter (\p -> Pairs.second p) (Lists.zip xs flags))++filterPhantomTypeArgs :: Model.Name -> [Model.Type] -> t0 -> Graph.Graph -> Either t1 [Model.Type]+filterPhantomTypeArgs calleeName allTypeArgs cx g =+    Eithers.bind (Right (Lexical.lookupBinding g calleeName)) (\mel -> Optionals.match mel (Right allTypeArgs) (\el -> Optionals.match (Model.bindingTypeScheme el) (Right allTypeArgs) (\ts ->+      let schemeVars = Lists.filter (\v -> isSimpleName v) (Model.typeSchemeVariables ts)+          schemeTypeVars = collectTypeVars (Model.typeSchemeBody ts)+          schemeType = Model.typeSchemeBody ts+          nParams = countFunctionParams schemeType+          peeled = peelDomainTypes nParams schemeType+          calleeDoms = Pairs.first peeled+          calleeCod = Pairs.second peeled+          overgenSubst = detectAccumulatorUnification calleeDoms calleeCod schemeVars+          keepFlags = Lists.map (\v -> Logic.and (Sets.member v schemeTypeVars) (Logic.not (Maps.member v overgenSubst))) schemeVars+      in (Logic.ifElse (Logic.not (Equality.equal (Lists.length schemeVars) (Lists.length allTypeArgs))) (Right allTypeArgs) (Right (filterPhantomTypeArgs_filterAndApply allTypeArgs keepFlags overgenSubst))))))++filterPhantomTypeArgs_filterAndApply :: [Model.Type] -> [Bool] -> M.Map Model.Name Model.Type -> [Model.Type]+filterPhantomTypeArgs_filterAndApply allTypeArgs keepFlags overgenSubst =++      let filtered = Lists.map (\p -> Pairs.first p) (Lists.filter (\p -> Pairs.second p) (Lists.zip allTypeArgs keepFlags))+      in (Logic.ifElse (Logic.not (Maps.isEmpty overgenSubst)) (Lists.map (\t -> substituteTypeVarsWithTypes overgenSubst t) filtered) filtered)++findMatchingLambdaVar :: Model.Name -> S.Set Model.Name -> Model.Name+findMatchingLambdaVar name lambdaVars =+    Logic.ifElse (Sets.member name lambdaVars) name (Logic.ifElse (isLambdaBoundIn_isQualified name) (Optionals.withDefault name (Lists.find (\lv -> Logic.and (isLambdaBoundIn_isQualified lv) (Equality.equal (CoreNames.localNameOf lv) (CoreNames.localNameOf name))) (Sets.toList lambdaVars))) (Logic.ifElse (Sets.member (Model.Name (CoreNames.localNameOf name)) lambdaVars) (Model.Name (CoreNames.localNameOf name)) name))++findPairFirst :: Model.Type -> Maybe Model.Name+findPairFirst t =+    case (Strip.deannotateType t) of+      Model.TypePair v0 -> case (Strip.deannotateType (Model.pairTypeFirst v0)) of+        Model.TypeVariable v1 -> Just v1+        _ -> Nothing+      _ -> Nothing++findSelfRefVar :: (Eq t0, Ord t0) => (M.Map t0 [t0] -> Maybe t0)+findSelfRefVar grouped =++      let selfRefs = Lists.filter (\entry -> Lists.member (Pairs.first entry) (Pairs.second entry)) (Maps.toList grouped)+      in (Optionals.map (\entry -> Pairs.first entry) (Lists.head selfRefs))++first20Primes :: [Integer]+first20Primes =+    [+      2,+      3,+      5,+      7,+      11,+      13,+      17,+      19,+      23,+      29,+      31,+      37,+      41,+      43,+      47,+      53,+      59,+      61,+      67,+      71]++flattenApps :: Model.Term -> [Model.Term] -> ([Model.Term], Model.Term)+flattenApps t acc =+    case (Strip.deannotateTerm t) of+      Model.TermApplication v0 -> flattenApps (Model.applicationFunction v0) (Lists.cons (Model.applicationArgument v0) acc)+      _ -> (acc, t)++flattenBindings :: [Model.Binding] -> [Model.Binding]+flattenBindings bindings =+    Lists.bind bindings (\b -> case (Strip.deannotateTerm (Model.bindingTerm b)) of+      Model.TermLet v0 -> Lists.concat2 (flattenBindings (Model.letBindings v0)) [+        Model.Binding {+          Model.bindingName = (Model.bindingName b),+          Model.bindingTerm = (Model.letBody v0),+          Model.bindingTypeScheme = (Model.bindingTypeScheme b)}]+      _ -> [+        b])++freshJavaName :: Model.Name -> S.Set Model.Name -> Model.Name+freshJavaName base avoid = freshJavaName_go base avoid 2++freshJavaName_go :: Model.Name -> S.Set Model.Name -> Int -> Model.Name+freshJavaName_go base avoid i =++      let candidate = Model.Name (Strings.concat2 (Model.unName base) (Literals.printInt32 i))+      in (Logic.ifElse (Sets.member candidate avoid) (freshJavaName_go base avoid (Math.add i 1)) candidate)++functionCall :: JavaEnvironment.JavaEnvironment -> Bool -> Model.Name -> [Model.Term] -> [Model.Type] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+functionCall env isPrim name args typeApps cx g =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+          isLambdaBound = isLambdaBoundIn name (JavaEnvironment.aliasesLambdaVars aliases)+      in (Eithers.bind (Eithers.mapList (\arg -> encodeTerm env arg cx g) args) (\jargs0 ->+        let wrapResult = wrapLazyArguments g name jargs0+            jargs = Pairs.first wrapResult+            mMethodOverride = Pairs.second wrapResult+        in (Logic.ifElse (Logic.or (isLocalVariable name) isLambdaBound) (Eithers.bind (encodeVariable env name cx g) (\baseExpr -> Right (Lists.foldl (\acc -> \jarg -> applyJavaArg acc jarg) baseExpr jargs))) (+          let overrideMethodName =+                  \jid -> Optionals.match mMethodOverride jid (\m ->+                    let s = Syntax.unIdentifier jid+                    in (Syntax.Identifier (Strings.concat2 (Strings.fromList (Lists.take (Math.sub (Strings.length s) (Strings.length JavaNames.applyMethodName)) (Strings.toList s))) m)))+          in (Logic.ifElse (Lists.isEmpty typeApps) (+            let header =+                    Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (overrideMethodName (elementJavaIdentifier isPrim False aliases name)))+            in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+              Syntax.methodInvocationHeader = header,+              Syntax.methodInvocationArguments = jargs})))) (+            let qn = CoreNames.qualifyName name+                mns = Util.qualifiedNameModuleName qn+                localName = Util.qualifiedNameLocal qn+            in (Optionals.match mns (+              let header =+                      Syntax.MethodInvocation_HeaderSimple (Syntax.MethodName (overrideMethodName (elementJavaIdentifier isPrim False aliases name)))+              in (Right (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+                Syntax.methodInvocationHeader = header,+                Syntax.methodInvocationArguments = jargs})))) (\ns_ ->+              let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)+                  methodId =+                          Logic.ifElse isPrim (overrideMethodName (Syntax.Identifier (Strings.concat2 (Syntax.unIdentifier (Utils.nameToJavaName aliases (CoreNames.unqualifyName (Util.QualifiedName {+                            Util.qualifiedNameModuleName = (Just ns_),+                            Util.qualifiedNameLocal = (Formatting.capitalize localName)})))) (Strings.concat2 "." JavaNames.applyMethodName)))) (Syntax.Identifier (Utils.sanitizeJavaName localName))+              in (Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) typeApps) (\jTypeArgs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs jargs))))))))))))++getCodomain :: M.Map Model.Name Model.Term -> t0 -> Graph.Graph -> Either Errors.Error Model.Type+getCodomain ann cx g = Eithers.map (\ft -> Model.functionTypeCodomain ft) (getFunctionType ann cx g)++getFunctionType :: M.Map Model.Name Model.Term -> t0 -> Graph.Graph -> Either Errors.Error Model.FunctionType+getFunctionType ann cx g =+    Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_a -> _a) (Annotations.getType g ann)) (\mt -> Optionals.match mt (Left (Errors.ErrorOther (Errors.OtherError "type annotation is required for function and elimination terms in Java"))) (\t -> case t of+      Model.TypeFunction v0 -> Right v0+      _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "expected function type, got: " (PrintModel.type_ t))))))++groupPairsByFirst :: Ord t0 => ([(t0, t1)] -> M.Map t0 [t1])+groupPairsByFirst pairs =+    Lists.foldl (\m -> \p ->+      let k = Pairs.first p+          v = Pairs.second p+      in (Maps.alter (\mv -> Optionals.match mv (Just [+        v]) (\vs -> Just (Lists.concat2 vs [+        v]))) k m)) Maps.empty pairs++hashCodeCompareExpr :: String -> String -> Syntax.Expression+hashCodeCompareExpr otherVar fname =++      let header =+              Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "Integer"))),+                Syntax.methodInvocation_ComplexTypeArguments = [],+                Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})+          thisHashCode =+                  Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Syntax.ExpressionName {+                        Syntax.expressionNameQualifier = Nothing,+                        Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fname))})),+                      Syntax.methodInvocation_ComplexTypeArguments = [],+                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),+                    Syntax.methodInvocationArguments = []})+          otherHashCode =+                  Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Utils.fieldExpression (Utils.javaIdentifier otherVar) (Utils.javaIdentifier fname))),+                      Syntax.methodInvocation_ComplexTypeArguments = [],+                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),+                    Syntax.methodInvocationArguments = []})+      in (Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+        Syntax.methodInvocationHeader = header,+        Syntax.methodInvocationArguments = [+          thisHashCode,+          otherHashCode]}))++hashCodeMultPair :: Integer -> Model.Name -> Syntax.MultiplicativeExpression+hashCodeMultPair i fname =++      let fnameStr = Model.unName fname+          lhs =+                  Syntax.MultiplicativeExpressionUnary (Utils.javaPrimaryToJavaUnaryExpression (Utils.javaLiteralToJavaPrimary (Utils.javaInt i)))+          rhs =+                  Utils.javaPostfixExpressionToJavaUnaryExpression (Utils.javaMethodInvocationToJavaPostfixExpression (Syntax.MethodInvocation {+                    Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+                      Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "java.util.Objects"))),+                      Syntax.methodInvocation_ComplexTypeArguments = [],+                      Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hashCodeMethodName)})),+                    Syntax.methodInvocationArguments = [+                      Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {+                        Syntax.expressionNameQualifier = Nothing,+                        Syntax.expressionNameIdentifier = (Syntax.Identifier (Utils.sanitizeJavaName fnameStr))})]}))+      in (Syntax.MultiplicativeExpressionTimes (Syntax.MultiplicativeExpression_Binary {+        Syntax.multiplicativeExpression_BinaryLhs = lhs,+        Syntax.multiplicativeExpression_BinaryRhs = rhs}))++hydraOrdinalMethod :: Maybe Int -> Syntax.ClassBodyDeclaration+hydraOrdinalMethod ordinal =++      let mods =+              Logic.ifElse (Optionals.isNone ordinal) [+                Syntax.MethodModifierPublic,+                Syntax.MethodModifierAbstract] [+                Syntax.MethodModifierPublic]+          anns = Logic.ifElse (Optionals.isNone ordinal) [] [+                Utils.overrideAnnotation]+          result = Utils.javaTypeToJavaResult Utils.javaIntType+          body =+                  Optionals.map (\n -> [+                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression (Literals.int32ToBigint n))))]) ordinal+      in (Utils.methodDeclaration mods [] anns JavaNames.hydraOrdinalMethodName [] result body)++innerClassRef :: JavaEnvironment.Aliases -> Model.Name -> String -> Syntax.Identifier+innerClassRef aliases name local =++      let id = Syntax.unIdentifier (Utils.nameToJavaName aliases name)+      in (Syntax.Identifier (Strings.concat2 (Strings.concat2 id ".") local))++insertBranchVar :: Model.Name -> JavaEnvironment.JavaEnvironment -> JavaEnvironment.JavaEnvironment+insertBranchVar name env =++      let aliases = JavaEnvironment.javaEnvironmentAliases env+      in JavaEnvironment.JavaEnvironment {+        JavaEnvironment.javaEnvironmentAliases = JavaEnvironment.Aliases {+          JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),+          JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),+          JavaEnvironment.aliasesBranchVars = (Sets.insert name (JavaEnvironment.aliasesBranchVars aliases)),+          JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases),+          JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),+          JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),+          JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases),+          JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),+          JavaEnvironment.aliasesLambdaVars = (JavaEnvironment.aliasesLambdaVars aliases),+          JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),+          JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),+          JavaEnvironment.aliasesMethodCodomain = Nothing,+          JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases)},+        JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env)}++interfaceTypes :: Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> [Syntax.InterfaceType]+interfaceTypes isSer aliases tparams elName =++      let javaSerializableType =+              Syntax.InterfaceType (Syntax.ClassType {+                Syntax.classTypeAnnotations = [],+                Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,+                Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Serializable"),+                Syntax.classTypeArguments = []})+          selfTypeArg =+                  Syntax.TypeArgumentReference (Utils.nameToJavaReferenceType aliases False (Lists.map (\tp_ -> Utils.typeParameterToTypeArgument tp_) tparams) elName Nothing)+          javaComparableType =+                  Syntax.InterfaceType (Syntax.ClassType {+                    Syntax.classTypeAnnotations = [],+                    Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,+                    Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Comparable"),+                    Syntax.classTypeArguments = [+                      selfTypeArg]})+      in (Logic.ifElse isSer [+        javaSerializableType,+        javaComparableType] [])++isBigIntegerType :: Model.Type -> Bool+isBigIntegerType typ =+    case (Strip.deannotateType typ) of+      Model.TypeLiteral v0 -> case v0 of+        Model.LiteralTypeInteger v1 -> case v1 of+          Model.IntegerTypeBigint -> True+          _ -> False+        _ -> False+      _ -> False++isBinaryType :: Model.Type -> Bool+isBinaryType typ =+    case (Strip.deannotateType typ) of+      Model.TypeLiteral v0 -> case v0 of+        Model.LiteralTypeBinary -> True+        _ -> False+      _ -> False++isFieldUnitType :: Model.Name -> Model.Name -> t0 -> Graph.Graph -> Either t1 Bool+isFieldUnitType typeName fieldName cx g =++      let schemaTypes = Graph.graphSchemaTypes g+      in (Optionals.match (Maps.lookup typeName schemaTypes) (Right False) (\ts -> case (Strip.deannotateType (Model.typeSchemeBody ts)) of+        Model.TypeUnion v0 -> Right (Optionals.match (Lists.find (\ft -> Equality.equal (Model.fieldTypeName ft) fieldName) v0) False (\ft -> Predicates.isUnitType (Strip.deannotateType (Model.fieldTypeType ft))))+        _ -> Right False))++isLambdaBoundIn :: Model.Name -> S.Set Model.Name -> Bool+isLambdaBoundIn name lambdaVars =+    Logic.or (Sets.member name lambdaVars) (Logic.or (Logic.and (isLambdaBoundIn_isQualified name) (Optionals.isGiven (Lists.find (\lv -> Logic.and (isLambdaBoundIn_isQualified lv) (Equality.equal (CoreNames.localNameOf lv) (CoreNames.localNameOf name))) (Sets.toList lambdaVars)))) (Logic.and (Logic.not (isLambdaBoundIn_isQualified name)) (Sets.member (Model.Name (CoreNames.localNameOf name)) lambdaVars)))++isLambdaBoundIn_isQualified :: Model.Name -> Bool+isLambdaBoundIn_isQualified n = Optionals.isGiven (Util.qualifiedNameModuleName (CoreNames.qualifyName n))++isLambdaBoundVariable :: Model.Name -> Bool+isLambdaBoundVariable name =++      let v = Model.unName name+      in (Ordering.lte (Strings.length v) 4)++isLocalVariable :: Model.Name -> Bool+isLocalVariable name = Optionals.isNone (Util.qualifiedNameModuleName (CoreNames.qualifyName name))++isNonComparableType :: Model.Type -> Bool+isNonComparableType typ =+    case (Strip.deannotateType typ) of+      Model.TypeEither _ -> True+      Model.TypeFunction _ -> True+      Model.TypeUnit -> True+      Model.TypeLiteral v0 -> case v0 of+        Model.LiteralTypeBinary -> True+        _ -> False+      Model.TypeForall v0 -> isNonComparableType (Model.forallTypeBody v0)+      _ -> False++isRecursiveVariable :: JavaEnvironment.Aliases -> Model.Name -> Bool+isRecursiveVariable aliases name = Sets.member name (JavaEnvironment.aliasesRecursiveVars aliases)++isSerializableJavaType :: Model.Type -> Bool+isSerializableJavaType typ = Predicates.isNominalType typ++isSimpleName :: Model.Name -> Bool+isSimpleName name = Equality.equal (Lists.length (Strings.splitOn "." (Model.unName name))) 1++isUnresolvedInferenceVar :: Model.Name -> Bool+isUnresolvedInferenceVar name =++      let chars = Strings.toList (Model.unName name)+      in (Optionals.withDefault False (Optionals.map (\p ->+        let firstCh = Pairs.first p+            rest = Pairs.second p+        in (Logic.ifElse (Logic.not (Equality.equal firstCh 116)) False (Logic.and (Logic.not (Lists.isEmpty rest)) (Lists.isEmpty (Lists.filter (\c -> Logic.not (isUnresolvedInferenceVar_isDigit c)) rest))))) (Lists.uncons chars)))++isUnresolvedInferenceVar_isDigit :: Int -> Bool+isUnresolvedInferenceVar_isDigit c = Logic.and (Ordering.gte c 48) (Ordering.lte c 57)++java11Features :: JavaEnvironment.JavaFeatures+java11Features = JavaEnvironment.JavaFeatures {+  JavaEnvironment.javaFeaturesSupportsDiamondOperator = True}++java8Features :: JavaEnvironment.JavaFeatures+java8Features = JavaEnvironment.JavaFeatures {+  JavaEnvironment.javaFeaturesSupportsDiamondOperator = False}++javaComparableRefType :: Syntax.ReferenceType+javaComparableRefType =+    Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (Syntax.ClassType {+      Syntax.classTypeAnnotations = [],+      Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,+      Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Comparable"),+      Syntax.classTypeArguments = []}))++javaEnvGetGraph :: JavaEnvironment.JavaEnvironment -> Graph.Graph+javaEnvGetGraph env = JavaEnvironment.javaEnvironmentGraph env++javaEnvSetGraph :: Graph.Graph -> JavaEnvironment.JavaEnvironment -> JavaEnvironment.JavaEnvironment+javaEnvSetGraph g env =+    JavaEnvironment.JavaEnvironment {+      JavaEnvironment.javaEnvironmentAliases = (JavaEnvironment.javaEnvironmentAliases env),+      JavaEnvironment.javaEnvironmentGraph = g}++javaFeatures :: JavaEnvironment.JavaFeatures+javaFeatures = java11Features++javaIdentifierToString :: Syntax.Identifier -> String+javaIdentifierToString id = Syntax.unIdentifier id++javaTypeArgumentsForNamedType :: Model.Name -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.TypeArgument]+javaTypeArgumentsForNamedType tname cx g =+    Eithers.bind (Resolution.requireType cx g tname) (\typ -> Right (Lists.map (\tp_ -> Utils.typeParameterToTypeArgument tp_) (javaTypeParametersForType typ)))++javaTypeArgumentsForType :: Model.Type -> [Syntax.TypeArgument]+javaTypeArgumentsForType typ = Lists.reverse (Lists.map Utils.typeParameterToTypeArgument (javaTypeParametersForType typ))++javaTypeParametersForType :: Model.Type -> [Syntax.TypeParameter]+javaTypeParametersForType typ =++      let toParam = \name -> Utils.javaTypeParameter (Formatting.capitalize (Model.unName name))+          boundVars = javaTypeParametersForType_bvars typ+          freeVars = Lists.filter (\v -> isLambdaBoundVariable v) (Sets.toList (Variables.freeVariablesInType typ))+          vars = Lists.distinct (Lists.concat2 boundVars freeVars)+      in (Lists.map toParam vars)++javaTypeParametersForType_bvars :: Model.Type -> [Model.Name]+javaTypeParametersForType_bvars t =+    case t of+      Model.TypeForall v0 -> Lists.cons (Model.forallTypeParameter v0) (javaTypeParametersForType_bvars (Model.forallTypeBody v0))+      _ -> []++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))))++moduleToJava :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (M.Map String String)+moduleToJava overlaySubs mod defs cx g =+    Eithers.bind (encodeDefinitions overlaySubs mod defs cx g) (\units -> Right (Maps.fromList (Lists.map (\entry ->+      let name = Pairs.first entry+          unit = Pairs.second entry+      in (bindingNameToFilePath name, (Serialization.printExpr (Serialization.parenthesize (Serde.compilationUnitToExpr unit))))) (Maps.toList units))))++nameMapToTypeMap :: Ord t0 => (M.Map t0 Model.Name -> M.Map t0 Model.Type)+nameMapToTypeMap m = Maps.map (\v -> Model.TypeVariable v) m++namespaceParent :: Packaging.ModuleName -> Maybe Packaging.ModuleName+namespaceParent ns =++      let parts = Strings.splitOn "." (Packaging.unModuleName ns)+          initParts = Optionals.withDefault [] (Lists.init parts)+      in (Logic.ifElse (Lists.isEmpty initParts) Nothing (Just (Packaging.ModuleName (Strings.join "." initParts))))++noComment :: Syntax.ClassBodyDeclaration -> Syntax.ClassBodyDeclarationWithComments+noComment decl =+    Syntax.ClassBodyDeclarationWithComments {+      Syntax.classBodyDeclarationWithCommentsValue = decl,+      Syntax.classBodyDeclarationWithCommentsComments = Nothing}++noInterfaceComment :: Syntax.InterfaceMemberDeclaration -> Syntax.InterfaceMemberDeclarationWithComments+noInterfaceComment decl =+    Syntax.InterfaceMemberDeclarationWithComments {+      Syntax.interfaceMemberDeclarationWithCommentsValue = decl,+      Syntax.interfaceMemberDeclarationWithCommentsComments = Nothing}++otherwiseBranch :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Model.Type -> Model.Type -> Model.Name -> Syntax.Type -> [Syntax.TypeArgument] -> Model.Term -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+otherwiseBranch env aliases dom cod tname jcod targs d cx g =++      let jdom = Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True targs tname Nothing)+          mods = [+                Syntax.MethodModifierPublic]+          anns = [+                Utils.overrideAnnotation]+          param = Utils.javaTypeToJavaFormalParameter jdom (Model.Name "instance")+          result = Syntax.ResultType (Syntax.UnannType jcod)+      in (Eithers.bind (analyzeJavaFunction env d cx g) (\fs ->+        let bindings = Typing.functionStructureBindings fs+            rawBody = Typing.functionStructureBody fs+            innerBody = annotateBodyWithCod cod rawBody+            env2 = Typing.functionStructureEnvironment fs+        in (Eithers.bind (bindingsToStatements env2 bindings cx g) (\bindResult ->+          let bindingStmts = Pairs.first bindResult+              env3 = Pairs.second bindResult+          in (Eithers.bind (encodeTerm env3 innerBody cx g) (\jret ->+            let returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))+                allStmts = Lists.concat2 bindingStmts [+                      returnStmt]+            in (Right (noComment (Utils.methodDeclaration mods [] anns JavaNames.otherwiseMethodName [+              param] result (Just allStmts))))))))))++peelDomainTypes :: Int -> Model.Type -> ([Model.Type], Model.Type)+peelDomainTypes n t =+    Logic.ifElse (Ordering.lte n 0) ([], t) (case (Strip.deannotateType t) of+      Model.TypeFunction v0 ->+        let rest = peelDomainTypes (Math.sub n 1) (Model.functionTypeCodomain v0)+        in (Lists.cons (Model.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))+      _ -> ([], t))++peelDomainsAndCod :: Int -> Model.Type -> ([Model.Type], Model.Type)+peelDomainsAndCod n t =+    Logic.ifElse (Ordering.lte n 0) ([], t) (case (Strip.deannotateType t) of+      Model.TypeFunction v0 ->+        let rest = peelDomainsAndCod (Math.sub n 1) (Model.functionTypeCodomain v0)+        in (Lists.cons (Model.functionTypeDomain v0) (Pairs.first rest), (Pairs.second rest))+      _ -> ([], t))++peelExpectedTypes :: M.Map Model.Name Model.Type -> Int -> Model.Type -> [Model.Type]+peelExpectedTypes subst n t =+    Logic.ifElse (Equality.equal n 0) [] (case (Strip.deannotateType t) of+      Model.TypeFunction v0 -> Lists.cons (applySubstFull subst (Model.functionTypeDomain v0)) (peelExpectedTypes subst (Math.sub n 1) (Model.functionTypeCodomain v0))+      _ -> [])++propagateType :: Model.Type -> Model.Term -> Model.Term+propagateType typ term =++      let setTypeAnn = \t -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ typ)) t+      in case (Strip.deannotateTerm term) of+        Model.TermLambda _ ->+          let annotated = setTypeAnn term+          in case (Strip.deannotateType typ) of+            Model.TypeFunction v1 -> propagateType_propagateIntoLambda (Model.functionTypeCodomain v1) annotated+            _ -> annotated+        Model.TermLet v0 ->+          let propagatedBindings =+                  Lists.map (\b -> Optionals.match (Model.bindingTypeScheme b) b (\ts -> Model.Binding {+                    Model.bindingName = (Model.bindingName b),+                    Model.bindingTerm = (propagateType (Model.typeSchemeBody ts) (Model.bindingTerm b)),+                    Model.bindingTypeScheme = (Model.bindingTypeScheme b)})) (Model.letBindings v0)+          in (setTypeAnn (propagateType_rebuildLet term propagatedBindings (propagateType typ (Model.letBody v0))))+        Model.TermApplication v0 ->+          let fun = Model.applicationFunction v0+              arg = Model.applicationArgument v0+              annotatedFun =+                      case (Strip.deannotateTerm fun) of+                        Model.TermCases v1 ->+                          let dom = Resolution.nominalApplication (Model.caseStatementTypeName v1) []+                              ft =+                                      Model.TypeFunction (Model.FunctionType {+                                        Model.functionTypeDomain = dom,+                                        Model.functionTypeCodomain = typ})+                          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ ft)) fun)+                        _ -> fun+          in (setTypeAnn (Model.TermApplication (Model.Application {+            Model.applicationFunction = annotatedFun,+            Model.applicationArgument = arg})))+        _ -> setTypeAnn term++propagateType_propagateIntoLambda :: Model.Type -> Model.Term -> Model.Term+propagateType_propagateIntoLambda cod t =+    case t of+      Model.TermAnnotated v0 -> Model.TermAnnotated (Model.AnnotatedTerm {+        Model.annotatedTermBody = (propagateType_propagateIntoLambda cod (Model.annotatedTermBody v0)),+        Model.annotatedTermAnnotation = (Model.annotatedTermAnnotation v0)})+      Model.TermLambda v0 -> Model.TermLambda (Model.Lambda {+        Model.lambdaParameter = (Model.lambdaParameter v0),+        Model.lambdaDomain = (Model.lambdaDomain v0),+        Model.lambdaBody = (propagateType cod (Model.lambdaBody v0))})+      _ -> t++propagateType_rebuildLet :: Model.Term -> [Model.Binding] -> Model.Term -> Model.Term+propagateType_rebuildLet t bindings newBody =+    case t of+      Model.TermAnnotated v0 -> Model.TermAnnotated (Model.AnnotatedTerm {+        Model.annotatedTermBody = (propagateType_rebuildLet (Model.annotatedTermBody v0) bindings newBody),+        Model.annotatedTermAnnotation = (Model.annotatedTermAnnotation v0)})+      Model.TermLet _ -> Model.TermLet (Model.Let {+        Model.letBindings = bindings,+        Model.letBody = newBody})+      _ -> t++propagateTypesInAppChain :: Model.Type -> Model.Type -> Model.Term -> Model.Term+propagateTypesInAppChain fixedCod resultType t =++      let flattened = flattenApps t []+          args = Pairs.first flattened+          fun = Pairs.second flattened+          lambdaDomsResult = collectLambdaDomains fun+          lambdaDoms = Pairs.first lambdaDomsResult+          nArgs = Lists.length args+          nLambdaDoms = Lists.length lambdaDoms+      in (Logic.ifElse (Logic.and (Ordering.gt nLambdaDoms 0) (Ordering.gt nArgs 0)) (+        let bodyRetType = Pairs.second (peelDomainsAndCod (Math.sub nLambdaDoms nArgs) resultType)+            funType =+                    Lists.foldl (\c -> \d -> Model.TypeFunction (Model.FunctionType {+                      Model.functionTypeDomain = d,+                      Model.functionTypeCodomain = c})) bodyRetType (Lists.reverse lambdaDoms)+            annotatedFun = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ funType)) fun+        in (rebuildApps annotatedFun args funType)) (case (Strip.deannotateTerm t) of+        Model.TermApplication v0 ->+          let lhs = Model.applicationFunction v0+              rhs = Model.applicationArgument v0+              annotatedLhs =+                      case (Strip.deannotateTerm lhs) of+                        Model.TermCases v1 ->+                          let dom = Resolution.nominalApplication (Model.caseStatementTypeName v1) []+                              ft =+                                      Model.TypeFunction (Model.FunctionType {+                                        Model.functionTypeDomain = dom,+                                        Model.functionTypeCodomain = fixedCod})+                          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ ft)) lhs)+                        _ -> lhs+          in (Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ resultType)) (Model.TermApplication (Model.Application {+            Model.applicationFunction = annotatedLhs,+            Model.applicationArgument = rhs})))+        _ -> Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ resultType)) t))++rebuildApps :: Model.Term -> [Model.Term] -> Model.Type -> Model.Term+rebuildApps f args fType =+    Logic.ifElse (Lists.isEmpty args) f (case (Strip.deannotateType fType) of+      Model.TypeFunction v0 -> Optionals.withDefault f (Optionals.map (\p ->+        let arg = Pairs.first p+            rest = Pairs.second p+            remainingType = Model.functionTypeCodomain v0+            app =+                    Model.TermApplication (Model.Application {+                      Model.applicationFunction = f,+                      Model.applicationArgument = arg})+            annotatedApp = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ remainingType)) app+        in (rebuildApps annotatedApp rest remainingType)) (Lists.uncons args))+      _ -> Lists.foldl (\acc -> \a -> Model.TermApplication (Model.Application {+        Model.applicationFunction = acc,+        Model.applicationArgument = a})) f args)++recordBuilderClass :: JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> [Model.FieldType] -> t0 -> Graph.Graph -> Either Errors.Error [Syntax.ClassBodyDeclarationWithComments]+recordBuilderClass aliases tparams elName fields cx g =++      let typeArgRefs = Lists.map Utils.typeParameterToReferenceType tparams+          typeArgs = Lists.map (\rt -> Syntax.TypeArgumentReference rt) typeArgRefs+          mTypeArgs = Logic.ifElse (Lists.isEmpty tparams) Nothing (Just (Syntax.TypeArgumentsOrDiamondArguments typeArgs))+          recordLocalName = Utils.sanitizeJavaName (CoreNames.localNameOf elName)+          builderType = Utils.javaRefType typeArgRefs Nothing "Builder"+          builderResult = Utils.javaTypeToJavaResult builderType+          recordType = Utils.javaRefType typeArgRefs Nothing recordLocalName+          recordResult = Utils.javaTypeToJavaResult recordType+          returnThisStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just Utils.javaThis))+      in (Eithers.bind (Eithers.mapList (\f ->+        let mods = [+              Syntax.FieldModifierPrivate]+            ftype = Model.fieldTypeType f+            fname = Model.fieldTypeName f+        in (Eithers.bind (encodeType aliases Sets.empty ftype cx g) (\jt -> Right (noComment (Utils.javaMemberField mods jt (Utils.fieldNameToJavaVariableDeclarator fname)))))) fields) (\builderFields -> Eithers.bind (Eithers.mapList (\f ->+        let mods = [+              Syntax.MethodModifierPublic]+            fname = Model.fieldTypeName f+            assignStmt = Syntax.BlockStatementStatement (Utils.toAssignStmt fname)+        in (Eithers.bind (fieldTypeToFormalParam aliases f cx g) (\param -> Right (noComment (Utils.methodDeclaration mods [] [] (builderSetterName fname) [+          param] builderResult (Just [+          assignStmt,+          returnThisStmt])))))) fields) (\setterMethods ->+        let buildMods = [+              Syntax.MethodModifierPublic]+            buildArgs = Lists.map (\f -> Utils.fieldNameToJavaExpression (Model.fieldTypeName f)) fields+            buildReturnStmt =+                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier recordLocalName) mTypeArgs) buildArgs Nothing)))+            buildMethod =+                    withCommentString (Strings.concat2 "Builds an immutable {@link " (Strings.concat2 recordLocalName "}.")) (Utils.methodDeclaration buildMods [] [] "build" [] recordResult (Just [+                      buildReturnStmt]))+            builderClassDecl =+                    Utils.javaClassDeclaration aliases tparams (Model.Name "Builder") [+                      Syntax.ClassModifierPublic,+                      Syntax.ClassModifierStatic,+                      Syntax.ClassModifierFinal] Nothing [] (Lists.concat [+                      builderFields,+                      setterMethods,+                      [+                        buildMethod]])+            builderClassMember =+                    withCommentString (Strings.concat2 "A fluent builder for {@link " (Strings.concat2 recordLocalName "}.")) (Syntax.ClassBodyDeclarationClassMember (Syntax.ClassMemberDeclarationClass builderClassDecl))+            factoryMods =+                    [+                      Syntax.MethodModifierPublic,+                      Syntax.MethodModifierStatic]+            factoryReturnStmt =+                    Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "Builder") mTypeArgs) [] Nothing)))+            factoryMethod =+                    withCommentString (Strings.concat2 "Creates a new fluent builder for {@link " (Strings.concat2 recordLocalName "}.")) (Utils.methodDeclaration factoryMods tparams [] "builder" [] builderResult (Just [+                      factoryReturnStmt]))+        in (Right [+          factoryMethod,+          builderClassMember]))))++recordCompareToMethod :: JavaEnvironment.Aliases -> t0 -> Model.Name -> [Model.FieldType] -> Syntax.ClassBodyDeclaration+recordCompareToMethod aliases tparams elName fields =++      let anns =+              [+                Utils.overrideAnnotation,+                Utils.suppressWarningsUncheckedAnnotation]+          mods = [+                Syntax.MethodModifierPublic]+          param =+                  Utils.javaTypeToJavaFormalParameter (Utils.javaTypeFromTypeName aliases elName) (Model.Name JavaNames.otherInstanceName)+          result = Utils.javaTypeToJavaResult Utils.javaIntType+      in (Utils.methodDeclaration mods [] anns JavaNames.compareToMethodName [+        param] result (Just (compareToBody aliases JavaNames.otherInstanceName fields)))++recordConstructor :: JavaEnvironment.Aliases -> Model.Name -> [Model.FieldType] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration+recordConstructor aliases elName fields cx g =++      let assignStmts = Lists.map (\f -> Syntax.BlockStatementStatement (Utils.toAssignStmt (Model.fieldTypeName f))) fields+      in (Eithers.bind (Eithers.mapList (\f -> fieldTypeToFormalParam aliases f cx g) fields) (\params -> Right (Utils.makeConstructor aliases elName False params assignStmts)))++recordEqualsMethod :: JavaEnvironment.Aliases -> Model.Name -> [Model.FieldType] -> Syntax.ClassBodyDeclaration+recordEqualsMethod aliases elName fields =++      let anns = [+            Utils.overrideAnnotation]+          mods = [+                Syntax.MethodModifierPublic]+          param = Utils.javaTypeToJavaFormalParameter (Utils.javaRefType [] Nothing "Object") (Model.Name JavaNames.otherInstanceName)+          result = Utils.javaTypeToJavaResult Utils.javaBooleanType+          tmpName = "o"+          instanceOfStmt =+                  Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {+                    Syntax.ifThenStatementExpression = (Utils.javaUnaryExpressionToJavaExpression (Syntax.UnaryExpressionOther (Syntax.UnaryExpressionNotPlusMinusNot (Utils.javaRelationalExpressionToJavaUnaryExpression (Utils.javaInstanceOf (Utils.javaIdentifierToJavaRelationalExpression (Utils.javaIdentifier JavaNames.otherInstanceName)) (Utils.nameToJavaReferenceType aliases False [] elName Nothing)))))),+                    Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaBooleanExpression False)))}))+          castStmt =+                  Utils.variableDeclarationStatement aliases (Utils.javaTypeFromTypeName aliases elName) (Utils.javaIdentifier tmpName) (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression (Utils.nameToJavaReferenceType aliases False [] elName Nothing) (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier (Utils.sanitizeJavaName JavaNames.otherInstanceName)))))+          returnAllFieldsEqual =+                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Logic.ifElse (Lists.isEmpty fields) (Utils.javaBooleanExpression True) (Utils.javaConditionalAndExpressionToJavaExpression (Syntax.ConditionalAndExpression (Lists.map (\f -> eqClause tmpName f) fields))))))+      in (Utils.methodDeclaration mods [] anns JavaNames.equalsMethodName [+        param] result (Just [+        instanceOfStmt,+        castStmt,+        returnAllFieldsEqual]))++recordHashCodeMethod :: [Model.FieldType] -> Syntax.ClassBodyDeclaration+recordHashCodeMethod fields =++      let anns = [+            Utils.overrideAnnotation]+          mods = [+                Syntax.MethodModifierPublic]+          result = Utils.javaTypeToJavaResult Utils.javaIntType+          returnSum =+                  Syntax.BlockStatementStatement (Logic.ifElse (Lists.isEmpty fields) (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0))) (Utils.javaReturnStatement (Just (Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions (Lists.zipWith hashCodeMultPair first20Primes (Lists.map (\f -> Model.fieldTypeName f) fields)))))))+      in (Utils.methodDeclaration mods [] anns JavaNames.hashCodeMethodName [] result (Just [+        returnSum]))++recordMemberVar :: JavaEnvironment.Aliases -> Model.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration+recordMemberVar aliases ft cx g =++      let mods =+              [+                Syntax.FieldModifierPublic,+                Syntax.FieldModifierFinal]+          fname = Model.fieldTypeName ft+          ftype = Model.fieldTypeType ft+      in (Eithers.bind (encodeType aliases Sets.empty ftype cx g) (\jt -> Right (Utils.javaMemberField mods jt (Utils.fieldNameToJavaVariableDeclarator fname))))++recordToStringMethod :: Model.Name -> [Model.FieldType] -> Syntax.ClassBodyDeclaration+recordToStringMethod elName fields =++      let anns = [+            Utils.overrideAnnotation]+          mods = [+                Syntax.MethodModifierPublic]+          result = Utils.javaTypeToJavaResult (Utils.javaRefType [] Nothing "String")+          className = Model.unName elName+          fieldParts = Lists.drop 1 (Lists.concat (Lists.map fieldToStringPart fields))+          allParts =+                  Lists.concat2 [+                    Utils.javaStringMultiplicativeExpression (Strings.concat2 className "{")] (Lists.concat2 fieldParts [+                    Utils.javaStringMultiplicativeExpression "}"])+          returnStr =+                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaAdditiveExpressionToJavaExpression (Utils.addExpressions allParts))))+      in (Utils.methodDeclaration mods [] anns JavaNames.toStringMethodName [] result (Just [+        returnStr]))++recordWithMethod :: JavaEnvironment.Aliases -> Model.Name -> [Model.FieldType] -> Model.FieldType -> t0 -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclaration+recordWithMethod aliases elName fields field cx g =++      let mods = [+            Syntax.MethodModifierPublic]+          anns = []+          methodName =+                  Strings.concat2 "with" (Formatting.nonAlnumToUnderscores (Formatting.capitalize (Model.unName (Model.fieldTypeName field))))+          result = Utils.referenceTypeToResult (Utils.nameToJavaReferenceType aliases False [] elName Nothing)+          consId = Syntax.Identifier (Utils.sanitizeJavaName (CoreNames.localNameOf elName))+          fieldArgs = Lists.map (\f -> Utils.fieldNameToJavaExpression (Model.fieldTypeName f)) fields+          returnStmt =+                  Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaConstructorCall (Utils.javaConstructorName consId Nothing) fieldArgs Nothing)))+      in (Eithers.bind (fieldTypeToFormalParam aliases field cx g) (\param -> Right (Utils.methodDeclaration mods [] anns methodName [+        param] result (Just [+        returnStmt]))))++resolveTypeApps :: [Model.Name] -> [Model.Type] -> M.Map Model.Name Model.Type -> [Model.Type]+resolveTypeApps schemeVars fallbackTypeApps argSubst =++      let resolvedVars = Sets.fromList (Maps.keys argSubst)+          unresolvedVars = Lists.filter (\v -> Logic.not (Sets.member v resolvedVars)) schemeVars+          usedTypes = Sets.fromList (Maps.elems argSubst)+          unusedIrTypes = Lists.filter (\t -> Logic.not (Sets.member t usedTypes)) fallbackTypeApps+          remainingSubst = Maps.fromList (Lists.zip unresolvedVars unusedIrTypes)+          fullSubst = Maps.union argSubst remainingSubst+      in (Lists.map (\v -> Maps.findWithDefault (Model.TypeVariable v) v fullSubst) schemeVars)++selfRefSubstitution :: (Eq t0, Ord t0) => (M.Map t0 [t0] -> M.Map t0 t0)+selfRefSubstitution grouped =+    Lists.foldl (\subst -> \entry -> selfRefSubstitution_processGroup subst (Pairs.first entry) (Pairs.second entry)) Maps.empty (Maps.toList grouped)++selfRefSubstitution_processGroup :: (Eq t0, Ord t0) => (M.Map t0 t0 -> t0 -> [t0] -> M.Map t0 t0)+selfRefSubstitution_processGroup subst inVar outVars =+    Logic.ifElse (Lists.member inVar outVars) (Lists.foldl (\s -> \v -> Logic.ifElse (Equality.equal v inVar) s (Maps.insert v inVar s)) subst outVars) subst++serializableTypes :: Bool -> [Syntax.InterfaceType]+serializableTypes isSer =++      let javaSerializableType =+              Syntax.InterfaceType (Syntax.ClassType {+                Syntax.classTypeAnnotations = [],+                Syntax.classTypeQualifier = Syntax.ClassTypeQualifierNone,+                Syntax.classTypeIdentifier = (Utils.javaTypeIdentifier "Serializable"),+                Syntax.classTypeArguments = []})+      in (Logic.ifElse isSer [+        javaSerializableType] [])++splitConstantInitializer :: Syntax.InterfaceMemberDeclaration -> [Syntax.InterfaceMemberDeclaration]+splitConstantInitializer member =+    case member of+      Syntax.InterfaceMemberDeclarationConstant v0 -> Lists.bind (Syntax.constantDeclarationVariables v0) (splitConstantInitializer_splitVar (Syntax.constantDeclarationModifiers v0) (Syntax.constantDeclarationType v0))+      _ -> [+        member]++splitConstantInitializer_splitVar :: [Syntax.ConstantModifier] -> Syntax.UnannType -> Syntax.VariableDeclarator -> [Syntax.InterfaceMemberDeclaration]+splitConstantInitializer_splitVar mods utype vd =++      let vid = Syntax.variableDeclaratorId vd+          mInit = Syntax.variableDeclaratorInitializer vd+      in (Optionals.match mInit [+        Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {+          Syntax.constantDeclarationModifiers = mods,+          Syntax.constantDeclarationType = utype,+          Syntax.constantDeclarationVariables = [+            vd]})] (\init_ -> case init_ of+        Syntax.VariableInitializerExpression v0 ->+          let varName = javaIdentifierToString (Syntax.variableDeclaratorIdIdentifier vid)+              helperName = Strings.concat2 "_init_" varName+              callExpr = Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocation Nothing (Syntax.Identifier helperName) [])+              field =+                      Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {+                        Syntax.constantDeclarationModifiers = mods,+                        Syntax.constantDeclarationType = utype,+                        Syntax.constantDeclarationVariables = [+                          Syntax.VariableDeclarator {+                            Syntax.variableDeclaratorId = vid,+                            Syntax.variableDeclaratorInitializer = (Just (Syntax.VariableInitializerExpression callExpr))}]})+              returnSt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just v0))+              resultType = Syntax.ResultType utype+              helper =+                      Utils.interfaceMethodDeclaration [+                        Syntax.InterfaceMethodModifierStatic,+                        Syntax.InterfaceMethodModifierPrivate] [] helperName [] resultType (Just [+                        returnSt])+          in [+            field,+            helper]+        _ -> [+          Syntax.InterfaceMemberDeclarationConstant (Syntax.ConstantDeclaration {+            Syntax.constantDeclarationModifiers = mods,+            Syntax.constantDeclarationType = utype,+            Syntax.constantDeclarationVariables = [+              vd]})]))++stripForalls :: Model.Type -> Model.Type+stripForalls t =+    case (Strip.deannotateType t) of+      Model.TypeForall v0 -> stripForalls (Model.forallTypeBody v0)+      _ -> t++substituteTypeVarsWithTypes :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type+substituteTypeVarsWithTypes subst t = substituteTypeVarsWithTypes_go subst (Strip.deannotateType t)++substituteTypeVarsWithTypes_go :: M.Map Model.Name Model.Type -> Model.Type -> Model.Type+substituteTypeVarsWithTypes_go subst t =+    case (Strip.deannotateType t) of+      Model.TypeVariable v0 -> Optionals.match (Maps.lookup v0 subst) t (\rep -> rep)+      Model.TypeFunction v0 -> Model.TypeFunction (Model.FunctionType {+        Model.functionTypeDomain = (substituteTypeVarsWithTypes_go subst (Model.functionTypeDomain v0)),+        Model.functionTypeCodomain = (substituteTypeVarsWithTypes_go subst (Model.functionTypeCodomain v0))})+      Model.TypeApplication v0 -> Model.TypeApplication (Model.ApplicationType {+        Model.applicationTypeFunction = (substituteTypeVarsWithTypes_go subst (Model.applicationTypeFunction v0)),+        Model.applicationTypeArgument = (substituteTypeVarsWithTypes_go subst (Model.applicationTypeArgument v0))})+      Model.TypeList v0 -> Model.TypeList (substituteTypeVarsWithTypes_go subst v0)+      Model.TypeSet v0 -> Model.TypeSet (substituteTypeVarsWithTypes_go subst v0)+      Model.TypeOptional v0 -> Model.TypeOptional (substituteTypeVarsWithTypes_go subst v0)+      Model.TypeEffect v0 -> Model.TypeEffect (substituteTypeVarsWithTypes_go subst v0)+      Model.TypeMap v0 -> Model.TypeMap (Model.MapType {+        Model.mapTypeKeys = (substituteTypeVarsWithTypes_go subst (Model.mapTypeKeys v0)),+        Model.mapTypeValues = (substituteTypeVarsWithTypes_go subst (Model.mapTypeValues v0))})+      Model.TypePair v0 -> Model.TypePair (Model.PairType {+        Model.pairTypeFirst = (substituteTypeVarsWithTypes_go subst (Model.pairTypeFirst v0)),+        Model.pairTypeSecond = (substituteTypeVarsWithTypes_go subst (Model.pairTypeSecond v0))})+      Model.TypeEither v0 -> Model.TypeEither (Model.EitherType {+        Model.eitherTypeLeft = (substituteTypeVarsWithTypes_go subst (Model.eitherTypeLeft v0)),+        Model.eitherTypeRight = (substituteTypeVarsWithTypes_go subst (Model.eitherTypeRight v0))})+      Model.TypeForall v0 -> Model.TypeForall (Model.ForallType {+        Model.forallTypeParameter = (Model.forallTypeParameter v0),+        Model.forallTypeBody = (substituteTypeVarsWithTypes_go subst (Model.forallTypeBody v0))})+      _ -> t++tagCmpNotZeroExpr :: Syntax.Expression+tagCmpNotZeroExpr =+    Utils.javaEqualityExpressionToJavaExpression (Syntax.EqualityExpressionNotEqual (Syntax.EqualityExpression_Binary {+      Syntax.equalityExpression_BinaryLhs = lhs,+      Syntax.equalityExpression_BinaryRhs = rhs}))+  where+    lhs =+        Utils.javaRelationalExpressionToJavaEqualityExpression (Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionName (Syntax.ExpressionName {+          Syntax.expressionNameQualifier = Nothing,+          Syntax.expressionNameIdentifier = (Utils.javaIdentifier "tagCmp")})))+    rhs =+        Utils.javaPostfixExpressionToJavaRelationalExpression (Syntax.PostfixExpressionPrimary (Utils.javaLiteralToJavaPrimary (Utils.javaInt 0)))++tagCompareExpr :: Syntax.Expression+tagCompareExpr =+    Utils.javaMethodInvocationToJavaExpression (Syntax.MethodInvocation {+      Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+        Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantType (Utils.javaTypeName (Syntax.Identifier "Integer"))),+        Syntax.methodInvocation_ComplexTypeArguments = [],+        Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier "compare")})),+      Syntax.methodInvocationArguments = [+        Utils.javaMethodInvocationToJavaExpression thisOrdinal,+        (Utils.javaMethodInvocationToJavaExpression otherOrdinal)]})+  where+    thisOrdinal =+        Syntax.MethodInvocation {+          Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+            Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantPrimary (Utils.javaExpressionToJavaPrimary Utils.javaThis)),+            Syntax.methodInvocation_ComplexTypeArguments = [],+            Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hydraOrdinalMethodName)})),+          Syntax.methodInvocationArguments = []}+    otherOrdinal =+        Syntax.MethodInvocation {+          Syntax.methodInvocationHeader = (Syntax.MethodInvocation_HeaderComplex (Syntax.MethodInvocation_Complex {+            Syntax.methodInvocation_ComplexVariant = (Syntax.MethodInvocation_VariantExpression (Syntax.ExpressionName {+              Syntax.expressionNameQualifier = Nothing,+              Syntax.expressionNameIdentifier = (Syntax.Identifier JavaNames.otherInstanceName)})),+            Syntax.methodInvocation_ComplexTypeArguments = [],+            Syntax.methodInvocation_ComplexIdentifier = (Syntax.Identifier JavaNames.hydraOrdinalMethodName)})),+          Syntax.methodInvocationArguments = []}++takeTypeArgs :: String -> Int -> [Syntax.Type] -> t0 -> t1 -> Either Errors.Error [Syntax.TypeArgument]+takeTypeArgs label n tyapps cx g =+    Logic.ifElse (Ordering.lt (Lists.length tyapps) n) (Left (Errors.ErrorOther (Errors.OtherError (Strings.concat [+      "needed type arguments for ",+      label,+      ", found too few"])))) (Eithers.mapList (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt))) (Lists.take n tyapps))++toClassDecl :: Bool -> Bool -> JavaEnvironment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> Model.Type -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassDeclaration+toClassDecl isInner isSer aliases tparams elName t cx g =++      let wrap =+              \t_ -> declarationForRecordType isInner isSer aliases tparams elName [+                Model.FieldType {+                  Model.fieldTypeName = (Model.Name "value"),+                  Model.fieldTypeType = (Strip.deannotateType t_)}] cx g+      in case (Strip.deannotateType t) of+        Model.TypeRecord v0 -> declarationForRecordType isInner isSer aliases tparams elName v0 cx g+        Model.TypeUnion v0 -> declarationForUnionType isSer aliases tparams elName v0 cx g+        Model.TypeForall v0 ->+          let v = Model.forallTypeParameter v0+              body = Model.forallTypeBody v0+              param = Utils.javaTypeParameter (Formatting.capitalize (Model.unName v))+          in (toClassDecl False isSer aliases (Lists.concat2 tparams [+            param]) elName body cx g)+        Model.TypeWrap v0 -> declarationForRecordType isInner isSer aliases tparams elName [+          Model.FieldType {+            Model.fieldTypeName = (Model.Name "value"),+            Model.fieldTypeType = v0}] cx g+        _ -> wrap t++toDeclInit :: JavaEnvironment.Aliases -> Graph.Graph -> S.Set Model.Name -> [Model.Binding] -> Model.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error (Maybe Syntax.BlockStatement)+toDeclInit aliasesExt gExt recursiveVars flatBindings name cx g =+    Logic.ifElse (Sets.member name recursiveVars) (+      let binding =+              Optionals.withDefault (Model.Binding {+                Model.bindingName = name,+                Model.bindingTerm = Model.TermUnit,+                Model.bindingTypeScheme = Nothing}) (Lists.head (Lists.filter (\b -> Equality.equal (Model.bindingName b) name) flatBindings))+          value = Model.bindingTerm binding+      in (Eithers.bind (Optionals.match (Model.bindingTypeScheme binding) (Checking.typeOfTerm cx gExt value) (\ts -> Right (Model.typeSchemeBody ts))) (\typ -> Eithers.bind (encodeType aliasesExt Sets.empty typ cx g) (\jtype ->+        let id = Utils.variableToJavaIdentifier name+            arid = Syntax.Identifier "java.util.concurrent.atomic.AtomicReference"+            aid =+                    Syntax.AnnotatedIdentifier {+                      Syntax.annotatedIdentifierAnnotations = [],+                      Syntax.annotatedIdentifierIdentifier = arid}+        in (Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt ->+          let targs = typeArgsOrDiamond [+                Syntax.TypeArgumentReference rt]+              ci =+                      Syntax.ClassOrInterfaceTypeToInstantiate {+                        Syntax.classOrInterfaceTypeToInstantiateIdentifiers = [+                          aid],+                        Syntax.classOrInterfaceTypeToInstantiateTypeArguments = (Just targs)}+              body = Utils.javaConstructorCall ci [] Nothing+              pkg =+                      JavaNames.javaPackageName [+                        "java",+                        "util",+                        "concurrent",+                        "atomic"]+              artype = Utils.javaRefType [+                    rt] (Just pkg) "AtomicReference"+          in (Right (Just (Utils.variableDeclarationStatement aliasesExt artype id body))))))))) (Right Nothing)++toDeclStatement :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Graph.Graph -> S.Set Model.Name -> S.Set Model.Name -> [Model.Binding] -> Model.Name -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.BlockStatement+toDeclStatement envExt aliasesExt gExt recursiveVars thunkedVars flatBindings name cx g =++      let binding =+              Optionals.withDefault (Model.Binding {+                Model.bindingName = name,+                Model.bindingTerm = Model.TermUnit,+                Model.bindingTypeScheme = Nothing}) (Lists.head (Lists.filter (\b -> Equality.equal (Model.bindingName b) name) flatBindings))+          value = Model.bindingTerm binding+      in (Eithers.bind (Optionals.match (Model.bindingTypeScheme binding) (Checking.typeOfTerm cx gExt value) (\ts -> Right (Model.typeSchemeBody ts))) (\typ -> Eithers.bind (encodeType aliasesExt Sets.empty typ cx g) (\jtype ->+        let id = Utils.variableToJavaIdentifier name+            annotatedValue = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ typ)) value+        in (Eithers.bind (encodeTerm envExt annotatedValue cx g) (\rhs -> Logic.ifElse (Sets.member name recursiveVars) (Right (Syntax.BlockStatementStatement (Utils.javaMethodInvocationToJavaStatement (Utils.methodInvocation (Just (Left (Syntax.ExpressionName {+          Syntax.expressionNameQualifier = Nothing,+          Syntax.expressionNameIdentifier = id}))) (Syntax.Identifier JavaNames.setMethodName) [+          rhs])))) (Logic.ifElse (Sets.member name thunkedVars) (Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt ->+          let lazyType = Utils.javaRefType [+                rt] JavaNames.hydraUtilPackageName "Lazy"+              lambdaBody = Syntax.LambdaBodyExpression rhs+              supplierLambda =+                      Syntax.ExpressionLambda (Syntax.LambdaExpression {+                        Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),+                        Syntax.lambdaExpressionBody = lambdaBody})+              targs = typeArgsOrDiamond [+                    Syntax.TypeArgumentReference rt]+              lazyExpr =+                      Utils.javaConstructorCall (Utils.javaConstructorName (Syntax.Identifier "hydra.core.overlay.java.util.Lazy") (Just targs)) [+                        supplierLambda] Nothing+          in (Right (Utils.variableDeclarationStatement aliasesExt lazyType id lazyExpr)))) (Right (Utils.variableDeclarationStatement aliasesExt jtype id rhs))))))))++tryInferFunctionType :: Model.Term -> Maybe Model.Type+tryInferFunctionType funTerm =+    case (Strip.deannotateTerm funTerm) of+      Model.TermLambda v0 -> Optionals.bind (Model.lambdaDomain v0) (\dom ->+        let mCod =+                case (Model.lambdaBody v0) of+                  Model.TermAnnotated v1 -> Optionals.bind (Maps.lookup Constants.keyType (Annotations.getAnnotationMap (Model.annotatedTermAnnotation v1))) (\typeTerm -> decodeTypeFromTerm typeTerm)+                  Model.TermLambda _ -> tryInferFunctionType (Model.lambdaBody v0)+                  _ -> Nothing+        in (Optionals.map (\cod -> Model.TypeFunction (Model.FunctionType {+          Model.functionTypeDomain = dom,+          Model.functionTypeCodomain = cod})) mCod))+      _ -> Nothing++typeAppFallbackCast :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> [M.Map Model.Name Model.Term] -> [Syntax.Type] -> Syntax.Type -> Model.Term -> Model.Type -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+typeAppFallbackCast env aliases anns tyapps jatyp body typ cx g =++      let annotatedBody = Annotations.setTermAnnotation Constants.keyType (Just (EncodeModel.type_ typ)) body+      in (Eithers.bind (encodeTermInternal env anns (Lists.cons jatyp tyapps) annotatedBody cx g) (\jbody -> Eithers.bind (encodeType aliases Sets.empty typ cx g) (\jtype -> Eithers.bind (Utils.javaTypeToJavaReferenceType jtype cx) (\rt -> Right (Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression rt (Utils.javaExpressionToJavaUnaryExpression jbody)))))))++typeAppNullaryOrHoisted :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> [M.Map Model.Name Model.Term] -> [Syntax.Type] -> Syntax.Type -> Model.Term -> Model.Type -> Model.Name -> JavaEnvironment.JavaSymbolClass -> [Model.Type] -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.Expression+typeAppNullaryOrHoisted env aliases anns tyapps jatyp body correctedTyp varName cls allTypeArgs cx g =++      let qn = CoreNames.qualifyName varName+          mns = Util.qualifiedNameModuleName qn+          localName = Util.qualifiedNameLocal qn+      in case cls of+        JavaEnvironment.JavaSymbolClassNullaryFunction -> Optionals.match mns (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g) (\ns_ ->+          let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)+              methodId = Syntax.Identifier (Utils.sanitizeJavaName localName)+          in (Eithers.bind (filterPhantomTypeArgs varName allTypeArgs cx g) (\filteredTypeArgs -> Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) filteredTypeArgs) (\jTypeArgs -> Right (Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs []))))))+        JavaEnvironment.JavaSymbolClassHoistedLambda v0 -> Optionals.match mns (typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g) (\ns_ ->+          let classId = Utils.nameToJavaName aliases (elementsQualifiedName ns_)+              methodId = Syntax.Identifier (Utils.sanitizeJavaName localName)+          in (Eithers.bind (filterPhantomTypeArgs varName allTypeArgs cx g) (\filteredTypeArgs -> Eithers.bind (Eithers.mapList (\t -> Eithers.bind (encodeType aliases Sets.empty t cx g) (\jt -> Eithers.bind (Utils.javaTypeToJavaReferenceType jt cx) (\rt -> Right (Syntax.TypeArgumentReference rt)))) filteredTypeArgs) (\jTypeArgs ->+            let paramNames = Lists.map (\i -> Model.Name (Strings.concat2 "p" (Literals.printInt32 i))) (Math.range 0 v0)+                paramExprs = Lists.map (\p -> Utils.javaIdentifierToJavaExpression (Utils.variableToJavaIdentifier p)) paramNames+                call =+                        Utils.javaMethodInvocationToJavaExpression (Utils.methodInvocationStaticWithTypeArgs classId methodId jTypeArgs paramExprs)+            in (Right (buildCurriedLambda paramNames call))))))+        _ -> typeAppFallbackCast env aliases anns tyapps jatyp body correctedTyp cx g++typeArgsOrDiamond :: [Syntax.TypeArgument] -> Syntax.TypeArgumentsOrDiamond+typeArgsOrDiamond args =+    Logic.ifElse (JavaEnvironment.javaFeaturesSupportsDiamondOperator javaFeatures) Syntax.TypeArgumentsOrDiamondDiamond (Syntax.TypeArgumentsOrDiamondArguments args)++typesMatch :: Model.Type -> Model.Type -> Bool+typesMatch a b =+    case a of+      Model.TypeVariable v0 -> case b of+        Model.TypeVariable v1 -> Equality.equal v0 v1+        _ -> True+      Model.TypeWrap v0 -> case b of+        Model.TypeWrap v1 -> Equality.equal v0 v1+        _ -> True+      _ -> True++unwrapReturnType :: Model.Type -> Model.Type+unwrapReturnType t =+    case (Strip.deannotateType t) of+      Model.TypeFunction v0 -> unwrapReturnType (Model.functionTypeCodomain v0)+      Model.TypeApplication v0 -> unwrapReturnType (Model.applicationTypeArgument v0)+      _ -> t++variantCompareToMethod :: JavaEnvironment.Aliases -> t0 -> Model.Name -> Model.Name -> Int -> [Model.FieldType] -> [Syntax.ClassBodyDeclaration]+variantCompareToMethod aliases tparams parentName variantName ordinal fields =++      let anns =+              [+                Utils.overrideAnnotation,+                Utils.suppressWarningsUncheckedAnnotation]+          mods = [+                Syntax.MethodModifierPublic]+          param =+                  Utils.javaTypeToJavaFormalParameter (Utils.javaTypeFromTypeName aliases parentName) (Model.Name JavaNames.otherInstanceName)+          result = Utils.javaTypeToJavaResult Utils.javaIntType+          varTmpName = "o"+          tagDeclStmt = Utils.variableDeclarationStatement aliases Utils.javaIntType (Utils.javaIdentifier "tagCmp") tagCompareExpr+          tagReturnStmt =+                  Syntax.BlockStatementStatement (Syntax.StatementIfThen (Syntax.IfThenStatement {+                    Syntax.ifThenStatementExpression = tagCmpNotZeroExpr,+                    Syntax.ifThenStatementStatement = (Utils.javaReturnStatement (Just (Utils.javaExpressionNameToJavaExpression (Syntax.ExpressionName {+                      Syntax.expressionNameQualifier = Nothing,+                      Syntax.expressionNameIdentifier = (Utils.javaIdentifier "tagCmp")}))))}))+          variantJavaType = Utils.javaTypeFromTypeName aliases variantName+          castOtherExpr =+                  Utils.javaCastExpressionToJavaExpression (Utils.javaCastExpression (Utils.nameToJavaReferenceType aliases False [] variantName Nothing) (Utils.javaIdentifierToJavaUnaryExpression (Syntax.Identifier JavaNames.otherInstanceName)))+          castDeclStmt = Utils.variableDeclarationStatement aliases variantJavaType (Utils.javaIdentifier varTmpName) castOtherExpr+          emptyReturn = [+                Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just (Utils.javaIntExpression 0)))]+          valueCompareStmt =+                  Logic.ifElse (Lists.isEmpty fields) emptyReturn (Lists.concat2 [+                    castDeclStmt] (compareToBody aliases varTmpName fields))+          body =+                  Lists.concat2 [+                    tagDeclStmt,+                    tagReturnStmt] valueCompareStmt+      in [+        Utils.methodDeclaration mods [] anns JavaNames.compareToMethodName [+          param] result (Just body),+        (hydraOrdinalMethod (Just ordinal))]++visitBranch :: JavaEnvironment.JavaEnvironment -> JavaEnvironment.Aliases -> Model.Type -> Model.Name -> Syntax.Type -> [Syntax.TypeArgument] -> Model.CaseAlternative -> Typing.InferenceContext -> Graph.Graph -> Either Errors.Error Syntax.ClassBodyDeclarationWithComments+visitBranch env aliases dom tname jcod targs field cx g =++      let jdom =+              Syntax.TypeReference (Utils.nameToJavaReferenceType aliases True targs tname (Just (Formatting.capitalize (Model.unName (Model.caseAlternativeName field)))))+          mods = [+                Syntax.MethodModifierPublic]+          anns = [+                Utils.overrideAnnotation]+          result = Syntax.ResultType (Syntax.UnannType jcod)+      in case (Strip.deannotateTerm (Model.caseAlternativeHandler field)) of+        Model.TermLambda v0 -> withLambda env v0 (\env2 ->+          let lambdaParam = Model.lambdaParameter v0+              body = Model.lambdaBody v0+              env3 = insertBranchVar lambdaParam env2+          in (Eithers.bind (analyzeJavaFunction env3 body cx g) (\fs ->+            let bindings = Typing.functionStructureBindings fs+                innerBody = Typing.functionStructureBody fs+                env4 = Typing.functionStructureEnvironment fs+            in (Eithers.bind (bindingsToStatements env4 bindings cx g) (\bindResult ->+              let bindingStmts = Pairs.first bindResult+                  env5 = Pairs.second bindResult+              in (Eithers.bind (encodeTerm env5 innerBody cx g) (\jret ->+                let param = Utils.javaTypeToJavaFormalParameter jdom lambdaParam+                    returnStmt = Syntax.BlockStatementStatement (Utils.javaReturnStatement (Just jret))+                    allStmts = Lists.concat2 bindingStmts [+                          returnStmt]+                in (Right (noComment (Utils.methodDeclaration mods [] anns JavaNames.visitMethodName [+                  param] result (Just allStmts)))))))))))+        _ -> Left (Errors.ErrorOther (Errors.OtherError (Strings.concat2 "visitBranch: field term is not a lambda: " (PrintModel.term (Model.caseAlternativeHandler field)))))++withCommentString :: String -> Syntax.ClassBodyDeclaration -> Syntax.ClassBodyDeclarationWithComments+withCommentString comment decl =+    Syntax.ClassBodyDeclarationWithComments {+      Syntax.classBodyDeclarationWithCommentsValue = decl,+      Syntax.classBodyDeclarationWithCommentsComments = (Just comment)}++withInterfaceCommentString :: String -> Syntax.InterfaceMemberDeclaration -> Syntax.InterfaceMemberDeclarationWithComments+withInterfaceCommentString comment decl =+    Syntax.InterfaceMemberDeclarationWithComments {+      Syntax.interfaceMemberDeclarationWithCommentsValue = decl,+      Syntax.interfaceMemberDeclarationWithCommentsComments = (Just comment)}++withLambda :: JavaEnvironment.JavaEnvironment -> Model.Lambda -> (JavaEnvironment.JavaEnvironment -> t0) -> t0+withLambda env lam k =+    CoreEnvironment.withLambdaContext javaEnvGetGraph javaEnvSetGraph env lam (\env1 ->+      let aliases = JavaEnvironment.javaEnvironmentAliases env1+          aliases2 =+                  JavaEnvironment.Aliases {+                    JavaEnvironment.aliasesCurrentNamespace = (JavaEnvironment.aliasesCurrentNamespace aliases),+                    JavaEnvironment.aliasesPackages = (JavaEnvironment.aliasesPackages aliases),+                    JavaEnvironment.aliasesBranchVars = (JavaEnvironment.aliasesBranchVars aliases),+                    JavaEnvironment.aliasesRecursiveVars = (JavaEnvironment.aliasesRecursiveVars aliases),+                    JavaEnvironment.aliasesInScopeTypeParams = (JavaEnvironment.aliasesInScopeTypeParams aliases),+                    JavaEnvironment.aliasesPolymorphicLocals = (JavaEnvironment.aliasesPolymorphicLocals aliases),+                    JavaEnvironment.aliasesInScopeJavaVars = (JavaEnvironment.aliasesInScopeJavaVars aliases),+                    JavaEnvironment.aliasesVarRenames = (JavaEnvironment.aliasesVarRenames aliases),+                    JavaEnvironment.aliasesLambdaVars = (Sets.insert (Model.lambdaParameter lam) (JavaEnvironment.aliasesLambdaVars aliases)),+                    JavaEnvironment.aliasesTypeVarSubst = (JavaEnvironment.aliasesTypeVarSubst aliases),+                    JavaEnvironment.aliasesTrustedTypeVars = (JavaEnvironment.aliasesTrustedTypeVars aliases),+                    JavaEnvironment.aliasesMethodCodomain = (JavaEnvironment.aliasesMethodCodomain aliases),+                    JavaEnvironment.aliasesThunkedVars = (JavaEnvironment.aliasesThunkedVars aliases)}+          env2 =+                  JavaEnvironment.JavaEnvironment {+                    JavaEnvironment.javaEnvironmentAliases = aliases2,+                    JavaEnvironment.javaEnvironmentGraph = (JavaEnvironment.javaEnvironmentGraph env1)}+      in (k env2))++withTypeLambda :: JavaEnvironment.JavaEnvironment -> Model.TypeLambda -> (JavaEnvironment.JavaEnvironment -> t0) -> t0+withTypeLambda = CoreEnvironment.withTypeLambdaContext javaEnvGetGraph javaEnvSetGraph++wrapInSupplierLambda :: Syntax.Expression -> Syntax.Expression+wrapInSupplierLambda expr =+    Syntax.ExpressionLambda (Syntax.LambdaExpression {+      Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersTuple []),+      Syntax.lambdaExpressionBody = (Syntax.LambdaBodyExpression expr)})++wrapLazyArguments :: Graph.Graph -> Model.Name -> [Syntax.Expression] -> ([Syntax.Expression], (Maybe String))+wrapLazyArguments g name args =++      let lazyFlags = lazyFlagsForPrimitive g name+          anyLazy = Lists.foldl (\b -> \f -> Logic.or b f) False lazyFlags+      in (Logic.ifElse (Logic.and anyLazy (Equality.equal (Lists.length args) (Lists.length lazyFlags))) (+        Lists.map (\pair -> Logic.ifElse (Pairs.second pair) (wrapInSupplierLambda (Pairs.first pair)) (Pairs.first pair)) (Lists.zip args lazyFlags),+        (Just (Logic.ifElse (Equality.equal name (Model.Name "hydra.core.lib.logic.ifElse")) "lazy" "applyLazy"))) (args, Nothing))
+ src/main/haskell/Hydra/Java/Dsl/Environment.hs view
@@ -0,0 +1,1559 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.java.environment++module Hydra.Java.Dsl.Environment where++import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Java.Dsl.Syntax as DslSyntax+import qualified Hydra.Java.Environment as Environment+import qualified Hydra.Java.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Map as M+import qualified Data.Set as S++-- | DSL constructor for hydra.java.environment.Aliases+aliases :: Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (M.Map Model.Name Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (M.Map Model.Name Model.Name) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm (Maybe Model.Type) -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliases currentNamespace packages branchVars recursiveVars inScopeTypeParams polymorphicLocals inScopeJavaVars varRenames lambdaVars typeVarSubst trustedTypeVars methodCodomain thunkedVars =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Typed.unTypedTerm currentNamespace)},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Typed.unTypedTerm packages)},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Typed.unTypedTerm branchVars)},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Typed.unTypedTerm recursiveVars)},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Typed.unTypedTerm inScopeTypeParams)},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Typed.unTypedTerm polymorphicLocals)},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Typed.unTypedTerm inScopeJavaVars)},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Typed.unTypedTerm varRenames)},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Typed.unTypedTerm lambdaVars)},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Typed.unTypedTerm typeVarSubst)},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Typed.unTypedTerm trustedTypeVars)},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Typed.unTypedTerm methodCodomain)},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Typed.unTypedTerm thunkedVars)}]}))++-- | DSL name token for hydra.java.environment.Aliases+aliasesAliases :: Typed.TypedName Environment.Aliases+aliasesAliases = Typed.TypedName (Model.Name "hydra.java.environment.Aliases")++-- | DSL accessor for the branchVars field of hydra.java.environment.Aliases+aliasesBranchVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesBranchVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "branchVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the currentNamespace field of hydra.java.environment.Aliases+aliasesCurrentNamespace :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Packaging.ModuleName+aliasesCurrentNamespace x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "currentNamespace")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the inScopeJavaVars field of hydra.java.environment.Aliases+aliasesInScopeJavaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesInScopeJavaVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the inScopeTypeParams field of hydra.java.environment.Aliases+aliasesInScopeTypeParams :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesInScopeTypeParams x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the lambdaVars field of hydra.java.environment.Aliases+aliasesLambdaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesLambdaVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "lambdaVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the methodCodomain field of hydra.java.environment.Aliases+aliasesMethodCodomain :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (Maybe Model.Type)+aliasesMethodCodomain x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "methodCodomain")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the packages field of hydra.java.environment.Aliases+aliasesPackages :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName)+aliasesPackages x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "packages")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the polymorphicLocals field of hydra.java.environment.Aliases+aliasesPolymorphicLocals :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesPolymorphicLocals x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the recursiveVars field of hydra.java.environment.Aliases+aliasesRecursiveVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesRecursiveVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "recursiveVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the thunkedVars field of hydra.java.environment.Aliases+aliasesThunkedVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesThunkedVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "thunkedVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the trustedTypeVars field of hydra.java.environment.Aliases+aliasesTrustedTypeVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name)+aliasesTrustedTypeVars x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeVarSubst field of hydra.java.environment.Aliases+aliasesTypeVarSubst :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Model.Name Model.Name)+aliasesTypeVarSubst x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "typeVarSubst")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the varRenames field of hydra.java.environment.Aliases+aliasesVarRenames :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Model.Name Model.Name)+aliasesVarRenames x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+        Model.projectionFieldName = (Model.Name "varRenames")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the branchVars field of hydra.java.environment.Aliases+aliasesWithBranchVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithBranchVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the currentNamespace field of hydra.java.environment.Aliases+aliasesWithCurrentNamespace :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Packaging.ModuleName -> Typed.TypedTerm Environment.Aliases+aliasesWithCurrentNamespace original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the inScopeJavaVars field of hydra.java.environment.Aliases+aliasesWithInScopeJavaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithInScopeJavaVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the inScopeTypeParams field of hydra.java.environment.Aliases+aliasesWithInScopeTypeParams :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithInScopeTypeParams original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the lambdaVars field of hydra.java.environment.Aliases+aliasesWithLambdaVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithLambdaVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the methodCodomain field of hydra.java.environment.Aliases+aliasesWithMethodCodomain :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (Maybe Model.Type) -> Typed.TypedTerm Environment.Aliases+aliasesWithMethodCodomain original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the packages field of hydra.java.environment.Aliases+aliasesWithPackages :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Packaging.ModuleName Syntax.PackageName) -> Typed.TypedTerm Environment.Aliases+aliasesWithPackages original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the polymorphicLocals field of hydra.java.environment.Aliases+aliasesWithPolymorphicLocals :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithPolymorphicLocals original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the recursiveVars field of hydra.java.environment.Aliases+aliasesWithRecursiveVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithRecursiveVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the thunkedVars field of hydra.java.environment.Aliases+aliasesWithThunkedVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithThunkedVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the trustedTypeVars field of hydra.java.environment.Aliases+aliasesWithTrustedTypeVars :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (S.Set Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithTrustedTypeVars original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeVarSubst field of hydra.java.environment.Aliases+aliasesWithTypeVarSubst :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Model.Name Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithTypeVarSubst original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "varRenames")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the varRenames field of hydra.java.environment.Aliases+aliasesWithVarRenames :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm (M.Map Model.Name Model.Name) -> Typed.TypedTerm Environment.Aliases+aliasesWithVarRenames original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.Aliases"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "currentNamespace"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "currentNamespace")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "packages"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "packages")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "branchVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "branchVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "recursiveVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "recursiveVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeTypeParams"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeTypeParams")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "polymorphicLocals"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "polymorphicLocals")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "inScopeJavaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "inScopeJavaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "varRenames"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "lambdaVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "lambdaVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeVarSubst"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "typeVarSubst")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trustedTypeVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "trustedTypeVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "methodCodomain"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "methodCodomain")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "thunkedVars"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.Aliases"),+              Model.projectionFieldName = (Model.Name "thunkedVars")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.environment.JavaEnvironment+javaEnvironment :: Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.JavaEnvironment+javaEnvironment aliases graph =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "aliases"),+          Model.fieldTerm = (Typed.unTypedTerm aliases)},+        Model.Field {+          Model.fieldName = (Model.Name "graph"),+          Model.fieldTerm = (Typed.unTypedTerm graph)}]}))++-- | DSL accessor for the aliases field of hydra.java.environment.JavaEnvironment+javaEnvironmentAliases :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Environment.Aliases+javaEnvironmentAliases x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+        Model.projectionFieldName = (Model.Name "aliases")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the graph field of hydra.java.environment.JavaEnvironment+javaEnvironmentGraph :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Graph.Graph+javaEnvironmentGraph x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+        Model.projectionFieldName = (Model.Name "graph")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.environment.JavaEnvironment+javaEnvironmentJavaEnvironment :: Typed.TypedName Environment.JavaEnvironment+javaEnvironmentJavaEnvironment = Typed.TypedName (Model.Name "hydra.java.environment.JavaEnvironment")++-- | DSL updater for the aliases field of hydra.java.environment.JavaEnvironment+javaEnvironmentWithAliases :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Environment.Aliases -> Typed.TypedTerm Environment.JavaEnvironment+javaEnvironmentWithAliases original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "aliases"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "graph"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+              Model.projectionFieldName = (Model.Name "graph")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the graph field of hydra.java.environment.JavaEnvironment+javaEnvironmentWithGraph :: Typed.TypedTerm Environment.JavaEnvironment -> Typed.TypedTerm Graph.Graph -> Typed.TypedTerm Environment.JavaEnvironment+javaEnvironmentWithGraph original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "aliases"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.environment.JavaEnvironment"),+              Model.projectionFieldName = (Model.Name "aliases")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "graph"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.environment.JavaFeatures+javaFeatures :: Typed.TypedTerm Bool -> Typed.TypedTerm Environment.JavaFeatures+javaFeatures supportsDiamondOperator =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.JavaFeatures"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "supportsDiamondOperator"),+          Model.fieldTerm = (Typed.unTypedTerm supportsDiamondOperator)}]}))++-- | DSL name token for hydra.java.environment.JavaFeatures+javaFeaturesJavaFeatures :: Typed.TypedName Environment.JavaFeatures+javaFeaturesJavaFeatures = Typed.TypedName (Model.Name "hydra.java.environment.JavaFeatures")++-- | DSL accessor for the supportsDiamondOperator field of hydra.java.environment.JavaFeatures+javaFeaturesSupportsDiamondOperator :: Typed.TypedTerm Environment.JavaFeatures -> Typed.TypedTerm Bool+javaFeaturesSupportsDiamondOperator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.environment.JavaFeatures"),+        Model.projectionFieldName = (Model.Name "supportsDiamondOperator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the supportsDiamondOperator field of hydra.java.environment.JavaFeatures+javaFeaturesWithSupportsDiamondOperator :: Typed.TypedTerm Environment.JavaFeatures -> Typed.TypedTerm Bool -> Typed.TypedTerm Environment.JavaFeatures+javaFeaturesWithSupportsDiamondOperator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.environment.JavaFeatures"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "supportsDiamondOperator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the constant variant of hydra.java.environment.JavaSymbolClass+javaSymbolClassConstant :: Typed.TypedTerm Environment.JavaSymbolClass+javaSymbolClassConstant =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.environment.JavaSymbolClass"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constant"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the hoistedLambda variant of hydra.java.environment.JavaSymbolClass+javaSymbolClassHoistedLambda :: Typed.TypedTerm Int -> Typed.TypedTerm Environment.JavaSymbolClass+javaSymbolClassHoistedLambda x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.environment.JavaSymbolClass"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "hoistedLambda"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.environment.JavaSymbolClass+javaSymbolClassJavaSymbolClass :: Typed.TypedName Environment.JavaSymbolClass+javaSymbolClassJavaSymbolClass = Typed.TypedName (Model.Name "hydra.java.environment.JavaSymbolClass")++-- | DSL injection for the localVariable variant of hydra.java.environment.JavaSymbolClass+javaSymbolClassLocalVariable :: Typed.TypedTerm Environment.JavaSymbolClass+javaSymbolClassLocalVariable =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.environment.JavaSymbolClass"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "localVariable"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nullaryFunction variant of hydra.java.environment.JavaSymbolClass+javaSymbolClassNullaryFunction :: Typed.TypedTerm Environment.JavaSymbolClass+javaSymbolClassNullaryFunction =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.environment.JavaSymbolClass"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "nullaryFunction"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the unaryFunction variant of hydra.java.environment.JavaSymbolClass+javaSymbolClassUnaryFunction :: Typed.TypedTerm Environment.JavaSymbolClass+javaSymbolClassUnaryFunction =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.environment.JavaSymbolClass"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unaryFunction"),+        Model.fieldTerm = Model.TermUnit}}))
+ src/main/haskell/Hydra/Java/Dsl/Language.hs view
@@ -0,0 +1,47 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.java.language++module Hydra.Java.Dsl.Language where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Java.Language as Language+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void+import qualified Data.Set as S++-- | DSL reference to hydra.java.language.javaLanguage+javaLanguage :: Typed.TypedTerm Coders.Language+javaLanguage = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.java.language.javaLanguage"))++-- | DSL reference to hydra.java.language.javaMaxTupleLength+javaMaxTupleLength :: Typed.TypedTerm Int+javaMaxTupleLength = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.java.language.javaMaxTupleLength"))++-- | DSL reference to hydra.java.language.reservedWords+reservedWords :: Typed.TypedTerm (S.Set String)+reservedWords = Typed.TypedTerm (Model.TermVariable (Model.Name "hydra.java.language.reservedWords"))
+ src/main/haskell/Hydra/Java/Dsl/Syntax.hs view
@@ -0,0 +1,16885 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.java.syntax++module Hydra.Java.Dsl.Syntax where++import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Java.Syntax as Syntax+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | DSL constructor for the hydra.java.syntax.AdditionalBound wrapper+additionalBound :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.AdditionalBound+additionalBound x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.AdditionalBound"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.AdditionalBound+additionalBoundAdditionalBound :: Typed.TypedName Syntax.AdditionalBound+additionalBoundAdditionalBound = Typed.TypedName (Model.Name "hydra.java.syntax.AdditionalBound")++-- | DSL name token for hydra.java.syntax.AdditiveExpression+additiveExpressionAdditiveExpression :: Typed.TypedName Syntax.AdditiveExpression+additiveExpressionAdditiveExpression = Typed.TypedName (Model.Name "hydra.java.syntax.AdditiveExpression")++-- | DSL injection for the minus variant of hydra.java.syntax.AdditiveExpression+additiveExpressionMinus :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression+additiveExpressionMinus x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "minus"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the plus variant of hydra.java.syntax.AdditiveExpression+additiveExpressionPlus :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression+additiveExpressionPlus x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "plus"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unary variant of hydra.java.syntax.AdditiveExpression+additiveExpressionUnary :: Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression+additiveExpressionUnary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_Binary :: Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary+additiveExpression_Binary lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL name token for hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_BinaryAdditiveExpression_Binary :: Typed.TypedName Syntax.AdditiveExpression_Binary+additiveExpression_BinaryAdditiveExpression_Binary =+    Typed.TypedName (Model.Name "hydra.java.syntax.AdditiveExpression_Binary")++-- | DSL accessor for the lhs field of hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_BinaryLhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression+additiveExpression_BinaryLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_BinaryRhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression+additiveExpression_BinaryRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary+additiveExpression_BinaryWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.AdditiveExpression_Binary+additiveExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.AdditiveExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.AdditiveExpression_Binary+additiveExpression_BinaryWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AdditiveExpression_Binary"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.AmbiguousName wrapper+ambiguousName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.AmbiguousName+ambiguousName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.AmbiguousName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.AmbiguousName+ambiguousNameAmbiguousName :: Typed.TypedName Syntax.AmbiguousName+ambiguousNameAmbiguousName = Typed.TypedName (Model.Name "hydra.java.syntax.AmbiguousName")++-- | DSL constructor for the hydra.java.syntax.AndExpression wrapper+andExpression :: Typed.TypedTerm [Syntax.EqualityExpression] -> Typed.TypedTerm Syntax.AndExpression+andExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.AndExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.AndExpression+andExpressionAndExpression :: Typed.TypedName Syntax.AndExpression+andExpressionAndExpression = Typed.TypedName (Model.Name "hydra.java.syntax.AndExpression")++-- | DSL constructor for hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifier :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotatedIdentifier+annotatedIdentifier annotations identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL name token for hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifierAnnotatedIdentifier :: Typed.TypedName Syntax.AnnotatedIdentifier+annotatedIdentifierAnnotatedIdentifier = Typed.TypedName (Model.Name "hydra.java.syntax.AnnotatedIdentifier")++-- | DSL accessor for the annotations field of hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifierAnnotations :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm [Syntax.Annotation]+annotatedIdentifierAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifierIdentifier :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm Syntax.Identifier+annotatedIdentifierIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifierWithAnnotations :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.AnnotatedIdentifier+annotatedIdentifierWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.AnnotatedIdentifier+annotatedIdentifierWithIdentifier :: Typed.TypedTerm Syntax.AnnotatedIdentifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotatedIdentifier+annotatedIdentifierWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotatedIdentifier"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.Annotation+annotationAnnotation :: Typed.TypedName Syntax.Annotation+annotationAnnotation = Typed.TypedName (Model.Name "hydra.java.syntax.Annotation")++-- | DSL constructor for the hydra.java.syntax.AnnotationInterfaceBody wrapper+annotationInterfaceBody :: Typed.TypedTerm [Syntax.AnnotationInterfaceMemberDeclaration] -> Typed.TypedTerm Syntax.AnnotationInterfaceBody+annotationInterfaceBody x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceBody"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.AnnotationInterfaceBody+annotationInterfaceBodyAnnotationInterfaceBody :: Typed.TypedName Syntax.AnnotationInterfaceBody+annotationInterfaceBodyAnnotationInterfaceBody = Typed.TypedName (Model.Name "hydra.java.syntax.AnnotationInterfaceBody")++-- | DSL constructor for hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclaration :: Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclaration modifiers identifier body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL name token for hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationAnnotationInterfaceDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationAnnotationInterfaceDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration")++-- | DSL accessor for the body field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationBody :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceBody+annotationInterfaceDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier+annotationInterfaceDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier]+annotationInterfaceDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithBody :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration+annotationInterfaceDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.AnnotationInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclaration :: Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclaration modifiers type_ identifier dims default_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Typed.unTypedTerm default_)}]}))++-- | DSL name token for hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationAnnotationInterfaceElementDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration")++-- | DSL accessor for the default field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationDefault :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.DefaultValue)+annotationInterfaceElementDeclarationDefault x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+        Model.projectionFieldName = (Model.Name "default")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the dims field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationDims :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.Dims)+annotationInterfaceElementDeclarationDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.Identifier+annotationInterfaceElementDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier]+annotationInterfaceElementDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationType :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.UnannType+annotationInterfaceElementDeclarationType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the default field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithDefault :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.DefaultValue) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithDefault original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "default"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the dims field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithDims :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithIdentifier :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "dims")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithModifiers :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm [Syntax.AnnotationInterfaceElementModifier] -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "dims")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithType :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration+annotationInterfaceElementDeclarationWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "dims")})),+            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.java.syntax.AnnotationInterfaceElementDeclaration"),+              Model.projectionFieldName = (Model.Name "default")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the abstract variant of hydra.java.syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAbstract :: Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAbstract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "abstract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotation variant of hydra.java.syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAnnotationInterfaceElementModifier :: Typed.TypedName Syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierAnnotationInterfaceElementModifier =+    Typed.TypedName (Model.Name "hydra.java.syntax.AnnotationInterfaceElementModifier")++-- | DSL injection for the public variant of hydra.java.syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierPublic :: Typed.TypedTerm Syntax.AnnotationInterfaceElementModifier+annotationInterfaceElementModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotationInterface variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationAnnotationInterface :: Typed.TypedTerm Syntax.AnnotationInterfaceElementDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationAnnotationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotationInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration :: Typed.TypedName Syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationAnnotationInterfaceMemberDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration")++-- | DSL injection for the class variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the constant variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationConstant :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationConstant x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constant"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.java.syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.AnnotationInterfaceMemberDeclaration+annotationInterfaceMemberDeclarationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the marker variant of hydra.java.syntax.Annotation+annotationMarker :: Typed.TypedTerm Syntax.MarkerAnnotation -> Typed.TypedTerm Syntax.Annotation+annotationMarker x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Annotation"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "marker"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the normal variant of hydra.java.syntax.Annotation+annotationNormal :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.Annotation+annotationNormal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Annotation"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the singleElement variant of hydra.java.syntax.Annotation+annotationSingleElement :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.Annotation+annotationSingleElement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Annotation"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "singleElement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ArrayAccess+arrayAccess :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ArrayAccess_Variant -> Typed.TypedTerm Syntax.ArrayAccess+arrayAccess expression variant =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm variant)}]}))++-- | DSL name token for hydra.java.syntax.ArrayAccess+arrayAccessArrayAccess :: Typed.TypedName Syntax.ArrayAccess+arrayAccessArrayAccess = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayAccess")++-- | DSL accessor for the expression field of hydra.java.syntax.ArrayAccess+arrayAccessExpression :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm (Maybe Syntax.Expression)+arrayAccessExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variant field of hydra.java.syntax.ArrayAccess+arrayAccessVariant :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.ArrayAccess_Variant+arrayAccessVariant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+        Model.projectionFieldName = (Model.Name "variant")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.ArrayAccess+arrayAccessWithExpression :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ArrayAccess+arrayAccessWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variant field of hydra.java.syntax.ArrayAccess+arrayAccessWithVariant :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.ArrayAccess_Variant -> Typed.TypedTerm Syntax.ArrayAccess+arrayAccessWithVariant original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayAccess"),+      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.java.syntax.ArrayAccess"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.ArrayAccess_Variant+arrayAccess_VariantArrayAccess_Variant :: Typed.TypedName Syntax.ArrayAccess_Variant+arrayAccess_VariantArrayAccess_Variant = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayAccess_Variant")++-- | DSL injection for the arrayCreationWithInitializer variant of hydra.java.syntax.ArrayAccess_Variant+arrayAccess_VariantArrayCreationWithInitializer :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer -> Typed.TypedTerm Syntax.ArrayAccess_Variant+arrayAccess_VariantArrayCreationWithInitializer x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrayCreationWithInitializer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the name variant of hydra.java.syntax.ArrayAccess_Variant+arrayAccess_VariantName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.ArrayAccess_Variant+arrayAccess_VariantName x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "name"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primary variant of hydra.java.syntax.ArrayAccess_Variant+arrayAccess_VariantPrimary :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression -> Typed.TypedTerm Syntax.ArrayAccess_Variant+arrayAccess_VariantPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayAccess_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpression+arrayCreationExpressionArrayCreationExpression :: Typed.TypedName Syntax.ArrayCreationExpression+arrayCreationExpressionArrayCreationExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpression")++-- | DSL injection for the noInit variant of hydra.java.syntax.ArrayCreationExpression+arrayCreationExpressionNoInit :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpression+arrayCreationExpressionNoInit x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "noInit"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the withInit variant of hydra.java.syntax.ArrayCreationExpression+arrayCreationExpressionWithInit :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpression+arrayCreationExpressionWithInit x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "withInit"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerArrayCreationExpressionWithInitializer =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer")++-- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerClassOrInterface :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primitive variant of hydra.java.syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerPrimitive :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer+arrayCreationExpressionWithInitializerPrimitive x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primitive"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterface type_ dims array =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Typed.unTypedTerm array)}]}))++-- | DSL accessor for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayInitializer+arrayCreationExpressionWithInitializer_ClassOrInterfaceArray x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "array")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceArrayCreationExpressionWithInitializer_ClassOrInterface =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface")++-- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.Dims]+arrayCreationExpressionWithInitializer_ClassOrInterfaceDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType+arrayCreationExpressionWithInitializer_ClassOrInterfaceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithArray original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "array")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface+arrayCreationExpressionWithInitializer_ClassOrInterfaceWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "array")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_Primitive type_ dims array =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Typed.unTypedTerm array)}]}))++-- | DSL accessor for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayInitializer+arrayCreationExpressionWithInitializer_PrimitiveArray x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "array")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive :: Typed.TypedName Syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveArrayCreationExpressionWithInitializer_Primitive =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive")++-- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm [Syntax.Dims]+arrayCreationExpressionWithInitializer_PrimitiveDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+arrayCreationExpressionWithInitializer_PrimitiveType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the array field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithArray :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithArray original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm [Syntax.Dims] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "array")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithInitializer_Primitive+arrayCreationExpressionWithInitializer_PrimitiveWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "array"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "array")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerArrayCreationExpressionWithoutInitializer =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer")++-- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerClassOrInterface :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primitive variant of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerPrimitive :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer+arrayCreationExpressionWithoutInitializerPrimitive x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primitive"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterface type_ dimExprs dims =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Typed.unTypedTerm dimExprs)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)}]}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceArrayCreationExpressionWithoutInitializer_ClassOrInterface =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface")++-- | DSL accessor for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.DimExpr]+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "dimExprs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm (Maybe Syntax.Dims)+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDimExprs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dimExprs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface+arrayCreationExpressionWithoutInitializer_ClassOrInterfaceWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dimExprs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_Primitive type_ dimExprs dims =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Typed.unTypedTerm dimExprs)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)}]}))++-- | DSL name token for hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive :: Typed.TypedName Syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveArrayCreationExpressionWithoutInitializer_Primitive =+    Typed.TypedName (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive")++-- | DSL accessor for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm [Syntax.DimExpr]+arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "dimExprs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm (Maybe Syntax.Dims)+arrayCreationExpressionWithoutInitializer_PrimitiveDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+arrayCreationExpressionWithoutInitializer_PrimitiveType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the dimExprs field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm [Syntax.DimExpr] -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithDimExprs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the dims field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithDims :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dimExprs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithType :: Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayCreationExpressionWithoutInitializer_Primitive+arrayCreationExpressionWithoutInitializer_PrimitiveWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dimExprs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dimExprs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.ArrayInitializer wrapper+arrayInitializer :: Typed.TypedTerm [[Syntax.VariableInitializer]] -> Typed.TypedTerm Syntax.ArrayInitializer+arrayInitializer x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ArrayInitializer"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ArrayInitializer+arrayInitializerArrayInitializer :: Typed.TypedName Syntax.ArrayInitializer+arrayInitializerArrayInitializer = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayInitializer")++-- | DSL constructor for hydra.java.syntax.ArrayType+arrayType :: Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm Syntax.ArrayType_Variant -> Typed.TypedTerm Syntax.ArrayType+arrayType dims variant =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm variant)}]}))++-- | DSL name token for hydra.java.syntax.ArrayType+arrayTypeArrayType :: Typed.TypedName Syntax.ArrayType+arrayTypeArrayType = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayType")++-- | DSL accessor for the dims field of hydra.java.syntax.ArrayType+arrayTypeDims :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.Dims+arrayTypeDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variant field of hydra.java.syntax.ArrayType+arrayTypeVariant :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ArrayType_Variant+arrayTypeVariant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+        Model.projectionFieldName = (Model.Name "variant")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the dims field of hydra.java.syntax.ArrayType+arrayTypeWithDims :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm Syntax.ArrayType+arrayTypeWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variant field of hydra.java.syntax.ArrayType+arrayTypeWithVariant :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ArrayType_Variant -> Typed.TypedTerm Syntax.ArrayType+arrayTypeWithVariant original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ArrayType"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.ArrayType_Variant+arrayType_VariantArrayType_Variant :: Typed.TypedName Syntax.ArrayType_Variant+arrayType_VariantArrayType_Variant = Typed.TypedName (Model.Name "hydra.java.syntax.ArrayType_Variant")++-- | DSL injection for the classOrInterface variant of hydra.java.syntax.ArrayType_Variant+arrayType_VariantClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ArrayType_Variant+arrayType_VariantClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayType_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primitive variant of hydra.java.syntax.ArrayType_Variant+arrayType_VariantPrimitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.ArrayType_Variant+arrayType_VariantPrimitive x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayType_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primitive"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variable variant of hydra.java.syntax.ArrayType_Variant+arrayType_VariantVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ArrayType_Variant+arrayType_VariantVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ArrayType_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.AssertStatement+assertStatementAssertStatement :: Typed.TypedName Syntax.AssertStatement+assertStatementAssertStatement = Typed.TypedName (Model.Name "hydra.java.syntax.AssertStatement")++-- | DSL injection for the pair variant of hydra.java.syntax.AssertStatement+assertStatementPair :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.AssertStatement+assertStatementPair x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "pair"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the single variant of hydra.java.syntax.AssertStatement+assertStatementSingle :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement+assertStatementSingle x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "single"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.AssertStatement_Pair+assertStatement_Pair :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair+assertStatement_Pair first second =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "first"),+          Model.fieldTerm = (Typed.unTypedTerm first)},+        Model.Field {+          Model.fieldName = (Model.Name "second"),+          Model.fieldTerm = (Typed.unTypedTerm second)}]}))++-- | DSL name token for hydra.java.syntax.AssertStatement_Pair+assertStatement_PairAssertStatement_Pair :: Typed.TypedName Syntax.AssertStatement_Pair+assertStatement_PairAssertStatement_Pair = Typed.TypedName (Model.Name "hydra.java.syntax.AssertStatement_Pair")++-- | DSL accessor for the first field of hydra.java.syntax.AssertStatement_Pair+assertStatement_PairFirst :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression+assertStatement_PairFirst x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+        Model.projectionFieldName = (Model.Name "first")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the second field of hydra.java.syntax.AssertStatement_Pair+assertStatement_PairSecond :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression+assertStatement_PairSecond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+        Model.projectionFieldName = (Model.Name "second")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the first field of hydra.java.syntax.AssertStatement_Pair+assertStatement_PairWithFirst :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair+assertStatement_PairWithFirst original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "first"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "second"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+              Model.projectionFieldName = (Model.Name "second")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the second field of hydra.java.syntax.AssertStatement_Pair+assertStatement_PairWithSecond :: Typed.TypedTerm Syntax.AssertStatement_Pair -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.AssertStatement_Pair+assertStatement_PairWithSecond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "first"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.AssertStatement_Pair"),+              Model.projectionFieldName = (Model.Name "first")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "second"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.Assignment+assignment :: Typed.TypedTerm Syntax.LeftHandSide -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Assignment+assignment lhs op expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Assignment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "op"),+          Model.fieldTerm = (Typed.unTypedTerm op)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL name token for hydra.java.syntax.Assignment+assignmentAssignment :: Typed.TypedName Syntax.Assignment+assignmentAssignment = Typed.TypedName (Model.Name "hydra.java.syntax.Assignment")++-- | DSL accessor for the expression field of hydra.java.syntax.Assignment+assignmentExpression :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Expression+assignmentExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the assignment variant of hydra.java.syntax.AssignmentExpression+assignmentExpressionAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionAssignment x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assignment"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.AssignmentExpression+assignmentExpressionAssignmentExpression :: Typed.TypedName Syntax.AssignmentExpression+assignmentExpressionAssignmentExpression = Typed.TypedName (Model.Name "hydra.java.syntax.AssignmentExpression")++-- | DSL injection for the conditional variant of hydra.java.syntax.AssignmentExpression+assignmentExpressionConditional :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.AssignmentExpression+assignmentExpressionConditional x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "conditional"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL accessor for the lhs field of hydra.java.syntax.Assignment+assignmentLhs :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.LeftHandSide+assignmentLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the op field of hydra.java.syntax.Assignment+assignmentOp :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentOperator+assignmentOp x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+        Model.projectionFieldName = (Model.Name "op")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the and variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorAnd :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorAnd =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "and"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.AssignmentOperator+assignmentOperatorAssignmentOperator :: Typed.TypedName Syntax.AssignmentOperator+assignmentOperatorAssignmentOperator = Typed.TypedName (Model.Name "hydra.java.syntax.AssignmentOperator")++-- | DSL injection for the div variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorDiv :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorDiv =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "div"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the minus variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorMinus :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorMinus =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "minus"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the mod variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorMod :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorMod =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "mod"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the or variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorOr :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorOr =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "or"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the plus variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorPlus :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorPlus =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "plus"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the shiftLeft variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorShiftLeft :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorShiftLeft =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftLeft"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the shiftRight variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorShiftRight :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorShiftRight =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftRight"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the shiftRightZeroFill variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorShiftRightZeroFill :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorShiftRightZeroFill =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftRightZeroFill"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the simple variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorSimple :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorSimple =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the times variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorTimes :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorTimes =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "times"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the xor variant of hydra.java.syntax.AssignmentOperator+assignmentOperatorXor :: Typed.TypedTerm Syntax.AssignmentOperator+assignmentOperatorXor =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.AssignmentOperator"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "xor"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL updater for the expression field of hydra.java.syntax.Assignment+assignmentWithExpression :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Assignment+assignmentWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Assignment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "op"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "op")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the lhs field of hydra.java.syntax.Assignment+assignmentWithLhs :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.LeftHandSide -> Typed.TypedTerm Syntax.Assignment+assignmentWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Assignment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "op"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "op")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the op field of hydra.java.syntax.Assignment+assignmentWithOp :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.AssignmentOperator -> Typed.TypedTerm Syntax.Assignment+assignmentWithOp original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Assignment"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "op"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Assignment"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.BasicForStatement+basicForStatement :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BasicForStatement+basicForStatement cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL name token for hydra.java.syntax.BasicForStatement+basicForStatementBasicForStatement :: Typed.TypedName Syntax.BasicForStatement+basicForStatementBasicForStatement = Typed.TypedName (Model.Name "hydra.java.syntax.BasicForStatement")++-- | DSL accessor for the body field of hydra.java.syntax.BasicForStatement+basicForStatementBody :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.Statement+basicForStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.BasicForStatement+basicForStatementCond :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForCond+basicForStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIf :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf+basicForStatementNoShortIf cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL name token for hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfBasicForStatementNoShortIf :: Typed.TypedName Syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfBasicForStatementNoShortIf =+    Typed.TypedName (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf")++-- | DSL accessor for the body field of hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfBody :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+basicForStatementNoShortIfBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfCond :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForCond+basicForStatementNoShortIfCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.BasicForStatementNoShortIf+basicForStatementNoShortIfWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.java.syntax.BasicForStatement+basicForStatementWithBody :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BasicForStatement+basicForStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.BasicForStatement+basicForStatementWithCond :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm Syntax.BasicForStatement+basicForStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.BasicForStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.Block wrapper+block :: Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.Block+block x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Block"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Block+blockBlock :: Typed.TypedName Syntax.Block+blockBlock = Typed.TypedName (Model.Name "hydra.java.syntax.Block")++-- | DSL name token for hydra.java.syntax.BlockStatement+blockStatementBlockStatement :: Typed.TypedName Syntax.BlockStatement+blockStatementBlockStatement = Typed.TypedName (Model.Name "hydra.java.syntax.BlockStatement")++-- | DSL injection for the localClassOrInterface variant of hydra.java.syntax.BlockStatement+blockStatementLocalClassOrInterface :: Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration -> Typed.TypedTerm Syntax.BlockStatement+blockStatementLocalClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.BlockStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "localClassOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the localVariableDeclaration variant of hydra.java.syntax.BlockStatement+blockStatementLocalVariableDeclaration :: Typed.TypedTerm Syntax.LocalVariableDeclarationStatement -> Typed.TypedTerm Syntax.BlockStatement+blockStatementLocalVariableDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.BlockStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "localVariableDeclaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the statement variant of hydra.java.syntax.BlockStatement+blockStatementStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.BlockStatement+blockStatementStatement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.BlockStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "statement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the array variant of hydra.java.syntax.BooleanArray+booleanArrayArray :: Typed.TypedTerm Syntax.BooleanArray -> Typed.TypedTerm Syntax.BooleanArray+booleanArrayArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.BooleanArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.BooleanArray+booleanArrayBooleanArray :: Typed.TypedName Syntax.BooleanArray+booleanArrayBooleanArray = Typed.TypedName (Model.Name "hydra.java.syntax.BooleanArray")++-- | DSL injection for the simple variant of hydra.java.syntax.BooleanArray+booleanArraySimple :: Typed.TypedTerm Syntax.BooleanArray+booleanArraySimple =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.BooleanArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.BreakStatement wrapper+breakStatement :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.BreakStatement+breakStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.BreakStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.BreakStatement+breakStatementBreakStatement :: Typed.TypedName Syntax.BreakStatement+breakStatementBreakStatement = Typed.TypedName (Model.Name "hydra.java.syntax.BreakStatement")++-- | DSL constructor for the hydra.java.syntax.CaseConstant wrapper+caseConstant :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.CaseConstant+caseConstant x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.CaseConstant"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.CaseConstant+caseConstantCaseConstant :: Typed.TypedName Syntax.CaseConstant+caseConstantCaseConstant = Typed.TypedName (Model.Name "hydra.java.syntax.CaseConstant")++-- | DSL constructor for hydra.java.syntax.CasePattern+casePattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CasePattern+casePattern pattern guard =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm pattern)},+        Model.Field {+          Model.fieldName = (Model.Name "guard"),+          Model.fieldTerm = (Typed.unTypedTerm guard)}]}))++-- | DSL name token for hydra.java.syntax.CasePattern+casePatternCasePattern :: Typed.TypedName Syntax.CasePattern+casePatternCasePattern = Typed.TypedName (Model.Name "hydra.java.syntax.CasePattern")++-- | DSL accessor for the guard field of hydra.java.syntax.CasePattern+casePatternGuard :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm (Maybe Syntax.Guard)+casePatternGuard x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+        Model.projectionFieldName = (Model.Name "guard")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the pattern field of hydra.java.syntax.CasePattern+casePatternPattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.Pattern+casePatternPattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+        Model.projectionFieldName = (Model.Name "pattern")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the guard field of hydra.java.syntax.CasePattern+casePatternWithGuard :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm (Maybe Syntax.Guard) -> Typed.TypedTerm Syntax.CasePattern+casePatternWithGuard original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+      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.java.syntax.CasePattern"),+              Model.projectionFieldName = (Model.Name "pattern")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "guard"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the pattern field of hydra.java.syntax.CasePattern+casePatternWithPattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.CasePattern+casePatternWithPattern original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "pattern"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "guard"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CasePattern"),+              Model.projectionFieldName = (Model.Name "guard")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.CastExpression+castExpressionCastExpression :: Typed.TypedName Syntax.CastExpression+castExpressionCastExpression = Typed.TypedName (Model.Name "hydra.java.syntax.CastExpression")++-- | DSL injection for the lambda variant of hydra.java.syntax.CastExpression+castExpressionLambda :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression+castExpressionLambda x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.CastExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lambda"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the notPlusMinus variant of hydra.java.syntax.CastExpression+castExpressionNotPlusMinus :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression+castExpressionNotPlusMinus x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.CastExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "notPlusMinus"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primitive variant of hydra.java.syntax.CastExpression+castExpressionPrimitive :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.CastExpression+castExpressionPrimitive x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.CastExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primitive"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.CastExpression_Lambda+castExpression_Lambda :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.CastExpression_Lambda+castExpression_Lambda refAndBounds expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Typed.unTypedTerm refAndBounds)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL name token for hydra.java.syntax.CastExpression_Lambda+castExpression_LambdaCastExpression_Lambda :: Typed.TypedName Syntax.CastExpression_Lambda+castExpression_LambdaCastExpression_Lambda = Typed.TypedName (Model.Name "hydra.java.syntax.CastExpression_Lambda")++-- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_Lambda+castExpression_LambdaExpression :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.LambdaExpression+castExpression_LambdaExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the refAndBounds field of hydra.java.syntax.CastExpression_Lambda+castExpression_LambdaRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds+castExpression_LambdaRefAndBounds x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+        Model.projectionFieldName = (Model.Name "refAndBounds")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.CastExpression_Lambda+castExpression_LambdaWithExpression :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.CastExpression_Lambda+castExpression_LambdaWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+              Model.projectionFieldName = (Model.Name "refAndBounds")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the refAndBounds field of hydra.java.syntax.CastExpression_Lambda+castExpression_LambdaWithRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_Lambda -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.CastExpression_Lambda+castExpression_LambdaWithRefAndBounds original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Lambda"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinus :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinus refAndBounds expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Typed.unTypedTerm refAndBounds)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL name token for hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusCastExpression_NotPlusMinus :: Typed.TypedName Syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusCastExpression_NotPlusMinus =+    Typed.TypedName (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus")++-- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusExpression :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression+castExpression_NotPlusMinusExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the refAndBounds field of hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds+castExpression_NotPlusMinusRefAndBounds x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+        Model.projectionFieldName = (Model.Name "refAndBounds")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusWithExpression :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+              Model.projectionFieldName = (Model.Name "refAndBounds")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the refAndBounds field of hydra.java.syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusWithRefAndBounds :: Typed.TypedTerm Syntax.CastExpression_NotPlusMinus -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.CastExpression_NotPlusMinus+castExpression_NotPlusMinusWithRefAndBounds original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "refAndBounds"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CastExpression_Primitive+castExpression_Primitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_Primitive+castExpression_Primitive type_ expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL name token for hydra.java.syntax.CastExpression_Primitive+castExpression_PrimitiveCastExpression_Primitive :: Typed.TypedName Syntax.CastExpression_Primitive+castExpression_PrimitiveCastExpression_Primitive =+    Typed.TypedName (Model.Name "hydra.java.syntax.CastExpression_Primitive")++-- | DSL accessor for the expression field of hydra.java.syntax.CastExpression_Primitive+castExpression_PrimitiveExpression :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.UnaryExpression+castExpression_PrimitiveExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.CastExpression_Primitive+castExpression_PrimitiveType :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+castExpression_PrimitiveType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.CastExpression_Primitive+castExpression_PrimitiveWithExpression :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.CastExpression_Primitive+castExpression_PrimitiveWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.CastExpression_Primitive+castExpression_PrimitiveWithType :: Typed.TypedTerm Syntax.CastExpression_Primitive -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.CastExpression_Primitive+castExpression_PrimitiveWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_Primitive"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBounds :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds+castExpression_RefAndBounds type_ bounds =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "bounds"),+          Model.fieldTerm = (Typed.unTypedTerm bounds)}]}))++-- | DSL accessor for the bounds field of hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsBounds :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm [Syntax.AdditionalBound]+castExpression_RefAndBoundsBounds x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+        Model.projectionFieldName = (Model.Name "bounds")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsCastExpression_RefAndBounds :: Typed.TypedName Syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsCastExpression_RefAndBounds =+    Typed.TypedName (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds")++-- | DSL accessor for the type field of hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsType :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.ReferenceType+castExpression_RefAndBoundsType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the bounds field of hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsWithBounds :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsWithBounds original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "bounds"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsWithType :: Typed.TypedTerm Syntax.CastExpression_RefAndBounds -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.CastExpression_RefAndBounds+castExpression_RefAndBoundsWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "bounds"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"),+              Model.projectionFieldName = (Model.Name "bounds")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CatchClause+catchClause :: Typed.TypedTerm (Maybe Syntax.CatchFormalParameter) -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CatchClause+catchClause parameter block =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameter"),+          Model.fieldTerm = (Typed.unTypedTerm parameter)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.CatchClause+catchClauseBlock :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.Block+catchClauseBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.CatchClause+catchClauseCatchClause :: Typed.TypedName Syntax.CatchClause+catchClauseCatchClause = Typed.TypedName (Model.Name "hydra.java.syntax.CatchClause")++-- | DSL accessor for the parameter field of hydra.java.syntax.CatchClause+catchClauseParameter :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.CatchFormalParameter)+catchClauseParameter x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+        Model.projectionFieldName = (Model.Name "parameter")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the block field of hydra.java.syntax.CatchClause+catchClauseWithBlock :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+              Model.projectionFieldName = (Model.Name "parameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the parameter field of hydra.java.syntax.CatchClause+catchClauseWithParameter :: Typed.TypedTerm Syntax.CatchClause -> Typed.TypedTerm (Maybe Syntax.CatchFormalParameter) -> Typed.TypedTerm Syntax.CatchClause+catchClauseWithParameter original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameter"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchClause"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CatchFormalParameter+catchFormalParameter :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.CatchFormalParameter+catchFormalParameter modifiers type_ id =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)}]}))++-- | DSL name token for hydra.java.syntax.CatchFormalParameter+catchFormalParameterCatchFormalParameter :: Typed.TypedName Syntax.CatchFormalParameter+catchFormalParameterCatchFormalParameter = Typed.TypedName (Model.Name "hydra.java.syntax.CatchFormalParameter")++-- | DSL accessor for the id field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterId :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.VariableDeclaratorId+catchFormalParameterId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterModifiers :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm [Syntax.VariableModifier]+catchFormalParameterModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterType :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.CatchType+catchFormalParameterType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the id field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterWithId :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.CatchFormalParameter+catchFormalParameterWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterWithModifiers :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.CatchFormalParameter+catchFormalParameterWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.CatchFormalParameter+catchFormalParameterWithType :: Typed.TypedTerm Syntax.CatchFormalParameter -> Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.CatchFormalParameter+catchFormalParameterWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchFormalParameter"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CatchType+catchType :: Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm [Syntax.ClassType] -> Typed.TypedTerm Syntax.CatchType+catchType type_ types =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm types)}]}))++-- | DSL name token for hydra.java.syntax.CatchType+catchTypeCatchType :: Typed.TypedName Syntax.CatchType+catchTypeCatchType = Typed.TypedName (Model.Name "hydra.java.syntax.CatchType")++-- | DSL accessor for the type field of hydra.java.syntax.CatchType+catchTypeType :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.UnannClassType+catchTypeType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchType"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the types field of hydra.java.syntax.CatchType+catchTypeTypes :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm [Syntax.ClassType]+catchTypeTypes x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchType"),+        Model.projectionFieldName = (Model.Name "types")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the type field of hydra.java.syntax.CatchType+catchTypeWithType :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm Syntax.CatchType+catchTypeWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchType"),+              Model.projectionFieldName = (Model.Name "types")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the types field of hydra.java.syntax.CatchType+catchTypeWithTypes :: Typed.TypedTerm Syntax.CatchType -> Typed.TypedTerm [Syntax.ClassType] -> Typed.TypedTerm Syntax.CatchType+catchTypeWithTypes original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CatchType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CatchType"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.Catches wrapper+catches :: Typed.TypedTerm [Syntax.CatchClause] -> Typed.TypedTerm Syntax.Catches+catches x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Catches"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Catches+catchesCatches :: Typed.TypedName Syntax.Catches+catchesCatches = Typed.TypedName (Model.Name "hydra.java.syntax.Catches")++-- | DSL constructor for the hydra.java.syntax.ClassBody wrapper+classBody :: Typed.TypedTerm [Syntax.ClassBodyDeclarationWithComments] -> Typed.TypedTerm Syntax.ClassBody+classBody x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ClassBody"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ClassBody+classBodyClassBody :: Typed.TypedName Syntax.ClassBody+classBodyClassBody = Typed.TypedName (Model.Name "hydra.java.syntax.ClassBody")++-- | DSL name token for hydra.java.syntax.ClassBodyDeclaration+classBodyDeclarationClassBodyDeclaration :: Typed.TypedName Syntax.ClassBodyDeclaration+classBodyDeclarationClassBodyDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ClassBodyDeclaration")++-- | DSL injection for the classMember variant of hydra.java.syntax.ClassBodyDeclaration+classBodyDeclarationClassMember :: Typed.TypedTerm Syntax.ClassMemberDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclaration+classBodyDeclarationClassMember x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classMember"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the constructorDeclaration variant of hydra.java.syntax.ClassBodyDeclaration+classBodyDeclarationConstructorDeclaration :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclaration+classBodyDeclarationConstructorDeclaration x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constructorDeclaration"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the instanceInitializer variant of hydra.java.syntax.ClassBodyDeclaration+classBodyDeclarationInstanceInitializer :: Typed.TypedTerm Syntax.InstanceInitializer -> Typed.TypedTerm Syntax.ClassBodyDeclaration+classBodyDeclarationInstanceInitializer x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "instanceInitializer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the staticInitializer variant of hydra.java.syntax.ClassBodyDeclaration+classBodyDeclarationStaticInitializer :: Typed.TypedTerm Syntax.StaticInitializer -> Typed.TypedTerm Syntax.ClassBodyDeclaration+classBodyDeclarationStaticInitializer x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "staticInitializer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithComments :: Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithComments value comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL name token for hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsClassBodyDeclarationWithComments :: Typed.TypedName Syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsClassBodyDeclarationWithComments =+    Typed.TypedName (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments")++-- | DSL accessor for the comments field of hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm (Maybe String)+classBodyDeclarationWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the value field of hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm Syntax.ClassBodyDeclaration+classBodyDeclarationWithCommentsValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),+      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.java.syntax.ClassBodyDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.java.syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments -> Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm Syntax.ClassBodyDeclarationWithComments+classBodyDeclarationWithCommentsWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          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.java.syntax.ClassBodyDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.ClassDeclaration+classDeclarationClassDeclaration :: Typed.TypedName Syntax.ClassDeclaration+classDeclarationClassDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ClassDeclaration")++-- | DSL injection for the enum variant of hydra.java.syntax.ClassDeclaration+classDeclarationEnum :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationEnum x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "enum"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the normal variant of hydra.java.syntax.ClassDeclaration+classDeclarationNormal :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationNormal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the record variant of hydra.java.syntax.ClassDeclaration+classDeclarationRecord :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.ClassDeclaration+classDeclarationRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "record"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpression :: Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression+classInstanceCreationExpression qualifier expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm qualifier)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL name token for hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionClassInstanceCreationExpression :: Typed.TypedName Syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionClassInstanceCreationExpression =+    Typed.TypedName (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression")++-- | DSL accessor for the expression field of hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionExpression :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+classInstanceCreationExpressionExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualifier field of hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionQualifier :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier)+classInstanceCreationExpressionQualifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "qualifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionWithExpression :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the qualifier field of hydra.java.syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionWithQualifier :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassInstanceCreationExpression_Qualifier) -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression+classInstanceCreationExpressionWithQualifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier :: Typed.TypedName Syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierClassInstanceCreationExpression_Qualifier =+    Typed.TypedName (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier")++-- | DSL injection for the expression variant of hydra.java.syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierExpression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primary variant of hydra.java.syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.ClassInstanceCreationExpression_Qualifier+classInstanceCreationExpression_QualifierPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the boolean variant of hydra.java.syntax.ClassLiteral+classLiteralBoolean :: Typed.TypedTerm Syntax.BooleanArray -> Typed.TypedTerm Syntax.ClassLiteral+classLiteralBoolean x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "boolean"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ClassLiteral+classLiteralClassLiteral :: Typed.TypedName Syntax.ClassLiteral+classLiteralClassLiteral = Typed.TypedName (Model.Name "hydra.java.syntax.ClassLiteral")++-- | DSL injection for the numericType variant of hydra.java.syntax.ClassLiteral+classLiteralNumericType :: Typed.TypedTerm Syntax.NumericTypeArray -> Typed.TypedTerm Syntax.ClassLiteral+classLiteralNumericType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "numericType"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the type variant of hydra.java.syntax.ClassLiteral+classLiteralType :: Typed.TypedTerm Syntax.TypeNameArray -> Typed.TypedTerm Syntax.ClassLiteral+classLiteralType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the void variant of hydra.java.syntax.ClassLiteral+classLiteralVoid :: Typed.TypedTerm Syntax.ClassLiteral+classLiteralVoid =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassLiteral"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "void"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the class variant of hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration+classMemberDeclarationClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationClassMemberDeclaration :: Typed.TypedName Syntax.ClassMemberDeclaration+classMemberDeclarationClassMemberDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ClassMemberDeclaration")++-- | DSL injection for the field variant of hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationField :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration+classMemberDeclarationField x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "field"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration+classMemberDeclarationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the method variant of hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationMethod :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.ClassMemberDeclaration+classMemberDeclarationMethod x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "method"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the none variant of hydra.java.syntax.ClassMemberDeclaration+classMemberDeclarationNone :: Typed.TypedTerm Syntax.ClassMemberDeclaration+classMemberDeclarationNone =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "none"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the abstract variant of hydra.java.syntax.ClassModifier+classModifierAbstract :: Typed.TypedTerm Syntax.ClassModifier+classModifierAbstract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "abstract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotation variant of hydra.java.syntax.ClassModifier+classModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ClassModifier+classModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ClassModifier+classModifierClassModifier :: Typed.TypedName Syntax.ClassModifier+classModifierClassModifier = Typed.TypedName (Model.Name "hydra.java.syntax.ClassModifier")++-- | DSL injection for the final variant of hydra.java.syntax.ClassModifier+classModifierFinal :: Typed.TypedTerm Syntax.ClassModifier+classModifierFinal =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "final"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the nonSealed variant of hydra.java.syntax.ClassModifier+classModifierNonSealed :: Typed.TypedTerm Syntax.ClassModifier+classModifierNonSealed =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "nonSealed"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the private variant of hydra.java.syntax.ClassModifier+classModifierPrivate :: Typed.TypedTerm Syntax.ClassModifier+classModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the protected variant of hydra.java.syntax.ClassModifier+classModifierProtected :: Typed.TypedTerm Syntax.ClassModifier+classModifierProtected =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "protected"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.ClassModifier+classModifierPublic :: Typed.TypedTerm Syntax.ClassModifier+classModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the sealed variant of hydra.java.syntax.ClassModifier+classModifierSealed :: Typed.TypedTerm Syntax.ClassModifier+classModifierSealed =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "sealed"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.ClassModifier+classModifierStatic :: Typed.TypedTerm Syntax.ClassModifier+classModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictfp variant of hydra.java.syntax.ClassModifier+classModifierStrictfp :: Typed.TypedTerm Syntax.ClassModifier+classModifierStrictfp =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictfp"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the class variant of hydra.java.syntax.ClassOrInterfaceType+classOrInterfaceTypeClass :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassOrInterfaceType+classOrInterfaceTypeClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ClassOrInterfaceType+classOrInterfaceTypeClassOrInterfaceType :: Typed.TypedName Syntax.ClassOrInterfaceType+classOrInterfaceTypeClassOrInterfaceType = Typed.TypedName (Model.Name "hydra.java.syntax.ClassOrInterfaceType")++-- | DSL injection for the interface variant of hydra.java.syntax.ClassOrInterfaceType+classOrInterfaceTypeInterface :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.ClassOrInterfaceType+classOrInterfaceTypeInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiate :: Typed.TypedTerm [Syntax.AnnotatedIdentifier] -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond) -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiate identifiers typeArguments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm identifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)}]}))++-- | DSL name token for hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate :: Typed.TypedName Syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateClassOrInterfaceTypeToInstantiate =+    Typed.TypedName (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate")++-- | DSL accessor for the identifiers field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateIdentifiers :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.AnnotatedIdentifier]+classOrInterfaceTypeToInstantiateIdentifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+        Model.projectionFieldName = (Model.Name "identifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateTypeArguments :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond)+classOrInterfaceTypeToInstantiateTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifiers field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateWithIdentifiers :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.AnnotatedIdentifier] -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateWithIdentifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateWithTypeArguments :: Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm (Maybe Syntax.TypeArgumentsOrDiamond) -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate+classOrInterfaceTypeToInstantiateWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"),+              Model.projectionFieldName = (Model.Name "identifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.ClassType+classType :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ClassTypeQualifier -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassType+classType annotations qualifier identifier arguments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm qualifier)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.ClassType+classTypeAnnotations :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.Annotation]+classTypeAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the arguments field of hydra.java.syntax.ClassType+classTypeArguments :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument]+classTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ClassType+classTypeClassType :: Typed.TypedName Syntax.ClassType+classTypeClassType = Typed.TypedName (Model.Name "hydra.java.syntax.ClassType")++-- | DSL accessor for the identifier field of hydra.java.syntax.ClassType+classTypeIdentifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.TypeIdentifier+classTypeIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualifier field of hydra.java.syntax.ClassType+classTypeQualifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassTypeQualifier+classTypeQualifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+        Model.projectionFieldName = (Model.Name "qualifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ClassTypeQualifier+classTypeQualifierClassTypeQualifier :: Typed.TypedName Syntax.ClassTypeQualifier+classTypeQualifierClassTypeQualifier = Typed.TypedName (Model.Name "hydra.java.syntax.ClassTypeQualifier")++-- | DSL injection for the none variant of hydra.java.syntax.ClassTypeQualifier+classTypeQualifierNone :: Typed.TypedTerm Syntax.ClassTypeQualifier+classTypeQualifierNone =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassTypeQualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "none"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the package variant of hydra.java.syntax.ClassTypeQualifier+classTypeQualifierPackage :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm Syntax.ClassTypeQualifier+classTypeQualifierPackage x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassTypeQualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "package"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parent variant of hydra.java.syntax.ClassTypeQualifier+classTypeQualifierParent :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ClassTypeQualifier+classTypeQualifierParent x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ClassTypeQualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "parent"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL updater for the annotations field of hydra.java.syntax.ClassType+classTypeWithAnnotations :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ClassType+classTypeWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the arguments field of hydra.java.syntax.ClassType+classTypeWithArguments :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassType+classTypeWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.ClassType+classTypeWithIdentifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.ClassType+classTypeWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the qualifier field of hydra.java.syntax.ClassType+classTypeWithQualifier :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ClassTypeQualifier -> Typed.TypedTerm Syntax.ClassType+classTypeWithQualifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ClassType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.ClassType"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclaration :: Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.CompactConstructorDeclaration+compactConstructorDeclaration modifiers name body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationBody :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody+compactConstructorDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationCompactConstructorDeclaration :: Typed.TypedName Syntax.CompactConstructorDeclaration+compactConstructorDeclarationCompactConstructorDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.CompactConstructorDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationModifiers :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier]+compactConstructorDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationName :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.SimpleTypeName+compactConstructorDeclarationName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithBody :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithModifiers :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "name")})),+            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.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.java.syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithName :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.CompactConstructorDeclaration+compactConstructorDeclarationWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          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.java.syntax.CompactConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.CompilationUnit+compilationUnitCompilationUnit :: Typed.TypedName Syntax.CompilationUnit+compilationUnitCompilationUnit = Typed.TypedName (Model.Name "hydra.java.syntax.CompilationUnit")++-- | DSL injection for the modular variant of hydra.java.syntax.CompilationUnit+compilationUnitModular :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.CompilationUnit+compilationUnitModular x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.CompilationUnit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "modular"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ordinary variant of hydra.java.syntax.CompilationUnit+compilationUnitOrdinary :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm Syntax.CompilationUnit+compilationUnitOrdinary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.CompilationUnit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ordinary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.ConditionalAndExpression wrapper+conditionalAndExpression :: Typed.TypedTerm [Syntax.InclusiveOrExpression] -> Typed.TypedTerm Syntax.ConditionalAndExpression+conditionalAndExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ConditionalAndExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConditionalAndExpression+conditionalAndExpressionConditionalAndExpression :: Typed.TypedName Syntax.ConditionalAndExpression+conditionalAndExpressionConditionalAndExpression =+    Typed.TypedName (Model.Name "hydra.java.syntax.ConditionalAndExpression")++-- | DSL name token for hydra.java.syntax.ConditionalExpression+conditionalExpressionConditionalExpression :: Typed.TypedName Syntax.ConditionalExpression+conditionalExpressionConditionalExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ConditionalExpression")++-- | DSL injection for the simple variant of hydra.java.syntax.ConditionalExpression+conditionalExpressionSimple :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ternaryCond variant of hydra.java.syntax.ConditionalExpression+conditionalExpressionTernaryCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionTernaryCond x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ternaryCond"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ternaryLambda variant of hydra.java.syntax.ConditionalExpression+conditionalExpressionTernaryLambda :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpressionTernaryLambda x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ternaryLambda"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCond :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCond cond ifTrue ifFalse =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Typed.unTypedTerm ifTrue)},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Typed.unTypedTerm ifFalse)}]}))++-- | DSL accessor for the cond field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalOrExpression+conditionalExpression_TernaryCondCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondConditionalExpression_TernaryCond :: Typed.TypedName Syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondConditionalExpression_TernaryCond =+    Typed.TypedName (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond")++-- | DSL accessor for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression+conditionalExpression_TernaryCondIfFalse x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+        Model.projectionFieldName = (Model.Name "ifFalse")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.Expression+conditionalExpression_TernaryCondIfTrue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+        Model.projectionFieldName = (Model.Name "ifTrue")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the cond field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "ifTrue")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "ifFalse")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithIfFalse original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "ifTrue")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryCond+conditionalExpression_TernaryCondWithIfTrue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"),+              Model.projectionFieldName = (Model.Name "ifFalse")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambda :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambda cond ifTrue ifFalse =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Typed.unTypedTerm ifTrue)},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Typed.unTypedTerm ifFalse)}]}))++-- | DSL accessor for the cond field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalOrExpression+conditionalExpression_TernaryLambdaCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda :: Typed.TypedName Syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaConditionalExpression_TernaryLambda =+    Typed.TypedName (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda")++-- | DSL accessor for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.LambdaExpression+conditionalExpression_TernaryLambdaIfFalse x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+        Model.projectionFieldName = (Model.Name "ifFalse")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.Expression+conditionalExpression_TernaryLambdaIfTrue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+        Model.projectionFieldName = (Model.Name "ifTrue")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the cond field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithCond :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "ifTrue")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "ifFalse")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the ifFalse field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithIfFalse :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithIfFalse original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "ifTrue")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the ifTrue field of hydra.java.syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithIfTrue :: Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConditionalExpression_TernaryLambda+conditionalExpression_TernaryLambdaWithIfTrue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "ifTrue"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "ifFalse"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"),+              Model.projectionFieldName = (Model.Name "ifFalse")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.ConditionalOrExpression wrapper+conditionalOrExpression :: Typed.TypedTerm [Syntax.ConditionalAndExpression] -> Typed.TypedTerm Syntax.ConditionalOrExpression+conditionalOrExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ConditionalOrExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConditionalOrExpression+conditionalOrExpressionConditionalOrExpression :: Typed.TypedName Syntax.ConditionalOrExpression+conditionalOrExpressionConditionalOrExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ConditionalOrExpression")++-- | DSL constructor for hydra.java.syntax.ConstantDeclaration+constantDeclaration :: Typed.TypedTerm [Syntax.ConstantModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.ConstantDeclaration+constantDeclaration modifiers type_ variables =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "variables"),+          Model.fieldTerm = (Typed.unTypedTerm variables)}]}))++-- | DSL name token for hydra.java.syntax.ConstantDeclaration+constantDeclarationConstantDeclaration :: Typed.TypedName Syntax.ConstantDeclaration+constantDeclarationConstantDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ConstantDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.ConstantDeclaration+constantDeclarationModifiers :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.ConstantModifier]+constantDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.ConstantDeclaration+constantDeclarationType :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.UnannType+constantDeclarationType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variables field of hydra.java.syntax.ConstantDeclaration+constantDeclarationVariables :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]+constantDeclarationVariables x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+        Model.projectionFieldName = (Model.Name "variables")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the modifiers field of hydra.java.syntax.ConstantDeclaration+constantDeclarationWithModifiers :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.ConstantModifier] -> Typed.TypedTerm Syntax.ConstantDeclaration+constantDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variables"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "variables")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.ConstantDeclaration+constantDeclarationWithType :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.ConstantDeclaration+constantDeclarationWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "variables"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "variables")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variables field of hydra.java.syntax.ConstantDeclaration+constantDeclarationWithVariables :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.ConstantDeclaration+constantDeclarationWithVariables original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.ConstantDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variables"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.ConstantExpression wrapper+constantExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.ConstantExpression+constantExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ConstantExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConstantExpression+constantExpressionConstantExpression :: Typed.TypedName Syntax.ConstantExpression+constantExpressionConstantExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ConstantExpression")++-- | DSL injection for the annotation variant of hydra.java.syntax.ConstantModifier+constantModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ConstantModifier+constantModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstantModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ConstantModifier+constantModifierConstantModifier :: Typed.TypedName Syntax.ConstantModifier+constantModifierConstantModifier = Typed.TypedName (Model.Name "hydra.java.syntax.ConstantModifier")++-- | DSL injection for the final variant of hydra.java.syntax.ConstantModifier+constantModifierFinal :: Typed.TypedTerm Syntax.ConstantModifier+constantModifierFinal =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstantModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "final"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.ConstantModifier+constantModifierPublic :: Typed.TypedTerm Syntax.ConstantModifier+constantModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstantModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.ConstantModifier+constantModifierStatic :: Typed.TypedTerm Syntax.ConstantModifier+constantModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstantModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.java.syntax.ConstructorBody+constructorBody :: Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation) -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.ConstructorBody+constructorBody invocation statements =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "invocation"),+          Model.fieldTerm = (Typed.unTypedTerm invocation)},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Typed.unTypedTerm statements)}]}))++-- | DSL name token for hydra.java.syntax.ConstructorBody+constructorBodyConstructorBody :: Typed.TypedName Syntax.ConstructorBody+constructorBodyConstructorBody = Typed.TypedName (Model.Name "hydra.java.syntax.ConstructorBody")++-- | DSL accessor for the invocation field of hydra.java.syntax.ConstructorBody+constructorBodyInvocation :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation)+constructorBodyInvocation x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+        Model.projectionFieldName = (Model.Name "invocation")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the statements field of hydra.java.syntax.ConstructorBody+constructorBodyStatements :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm [Syntax.BlockStatement]+constructorBodyStatements x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+        Model.projectionFieldName = (Model.Name "statements")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the invocation field of hydra.java.syntax.ConstructorBody+constructorBodyWithInvocation :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm (Maybe Syntax.ExplicitConstructorInvocation) -> Typed.TypedTerm Syntax.ConstructorBody+constructorBodyWithInvocation original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "invocation"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+              Model.projectionFieldName = (Model.Name "statements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statements field of hydra.java.syntax.ConstructorBody+constructorBodyWithStatements :: Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.ConstructorBody+constructorBodyWithStatements original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "invocation"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorBody"),+              Model.projectionFieldName = (Model.Name "invocation")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.ConstructorDeclaration+constructorDeclaration :: Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.ConstructorDeclaration+constructorDeclaration modifiers constructor throws body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "constructor"),+          Model.fieldTerm = (Typed.unTypedTerm constructor)},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Typed.unTypedTerm throws)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationBody :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody+constructorDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the constructor field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationConstructor :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclarationConstructor x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "constructor")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ConstructorDeclaration+constructorDeclarationConstructorDeclaration :: Typed.TypedName Syntax.ConstructorDeclaration+constructorDeclarationConstructorDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ConstructorDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationModifiers :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier]+constructorDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the throws field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationThrows :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm (Maybe Syntax.Throws)+constructorDeclarationThrows x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+        Model.projectionFieldName = (Model.Name "throws")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationWithBody :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorBody -> Typed.TypedTerm Syntax.ConstructorDeclaration+constructorDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructor"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "constructor")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "throws")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the constructor field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationWithConstructor :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.ConstructorDeclaration+constructorDeclarationWithConstructor original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructor"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "throws")})),+            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.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationWithModifiers :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm [Syntax.ConstructorModifier] -> Typed.TypedTerm Syntax.ConstructorDeclaration+constructorDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "constructor"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "constructor")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "throws")})),+            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.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the throws field of hydra.java.syntax.ConstructorDeclaration+constructorDeclarationWithThrows :: Typed.TypedTerm Syntax.ConstructorDeclaration -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.ConstructorDeclaration+constructorDeclarationWithThrows original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "constructor"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "constructor")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          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.java.syntax.ConstructorDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ConstructorDeclarator+constructorDeclarator :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclarator parameters name receiverParameter formalParameters =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Typed.unTypedTerm receiverParameter)},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Typed.unTypedTerm formalParameters)}]}))++-- | DSL name token for hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorConstructorDeclarator :: Typed.TypedName Syntax.ConstructorDeclarator+constructorDeclaratorConstructorDeclarator = Typed.TypedName (Model.Name "hydra.java.syntax.ConstructorDeclarator")++-- | DSL accessor for the formalParameters field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorFormalParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.FormalParameter]+constructorDeclaratorFormalParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+        Model.projectionFieldName = (Model.Name "formalParameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the name field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorName :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.SimpleTypeName+constructorDeclaratorName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the parameters field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.TypeParameter]+constructorDeclaratorParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the receiverParameter field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorReceiverParameter :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter)+constructorDeclaratorReceiverParameter x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+        Model.projectionFieldName = (Model.Name "receiverParameter")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the formalParameters field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorWithFormalParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclaratorWithFormalParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "receiverParameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorWithName :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclaratorWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "receiverParameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "formalParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorWithParameters :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclaratorWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "receiverParameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "formalParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the receiverParameter field of hydra.java.syntax.ConstructorDeclarator+constructorDeclaratorWithReceiverParameter :: Typed.TypedTerm Syntax.ConstructorDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm Syntax.ConstructorDeclarator+constructorDeclaratorWithReceiverParameter original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ConstructorDeclarator"),+              Model.projectionFieldName = (Model.Name "formalParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the annotation variant of hydra.java.syntax.ConstructorModifier+constructorModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ConstructorModifier+constructorModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstructorModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ConstructorModifier+constructorModifierConstructorModifier :: Typed.TypedName Syntax.ConstructorModifier+constructorModifierConstructorModifier = Typed.TypedName (Model.Name "hydra.java.syntax.ConstructorModifier")++-- | DSL injection for the private variant of hydra.java.syntax.ConstructorModifier+constructorModifierPrivate :: Typed.TypedTerm Syntax.ConstructorModifier+constructorModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstructorModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the protected variant of hydra.java.syntax.ConstructorModifier+constructorModifierProtected :: Typed.TypedTerm Syntax.ConstructorModifier+constructorModifierProtected =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstructorModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "protected"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.ConstructorModifier+constructorModifierPublic :: Typed.TypedTerm Syntax.ConstructorModifier+constructorModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ConstructorModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.ContinueStatement wrapper+continueStatement :: Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ContinueStatement+continueStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ContinueStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ContinueStatement+continueStatementContinueStatement :: Typed.TypedName Syntax.ContinueStatement+continueStatementContinueStatement = Typed.TypedName (Model.Name "hydra.java.syntax.ContinueStatement")++-- | DSL constructor for the hydra.java.syntax.DefaultValue wrapper+defaultValue :: Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.DefaultValue+defaultValue x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.DefaultValue"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.DefaultValue+defaultValueDefaultValue :: Typed.TypedName Syntax.DefaultValue+defaultValueDefaultValue = Typed.TypedName (Model.Name "hydra.java.syntax.DefaultValue")++-- | DSL constructor for hydra.java.syntax.DimExpr+dimExpr :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DimExpr+dimExpr annotations expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.DimExpr+dimExprAnnotations :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm [Syntax.Annotation]+dimExprAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.DimExpr+dimExprDimExpr :: Typed.TypedName Syntax.DimExpr+dimExprDimExpr = Typed.TypedName (Model.Name "hydra.java.syntax.DimExpr")++-- | DSL accessor for the expression field of hydra.java.syntax.DimExpr+dimExprExpression :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm (Maybe Syntax.Expression)+dimExprExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.DimExpr+dimExprWithAnnotations :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.DimExpr+dimExprWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the expression field of hydra.java.syntax.DimExpr+dimExprWithExpression :: Typed.TypedTerm Syntax.DimExpr -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.DimExpr+dimExprWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.DimExpr"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.Dims wrapper+dims :: Typed.TypedTerm [[Syntax.Annotation]] -> Typed.TypedTerm Syntax.Dims+dims x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Dims"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Dims+dimsDims :: Typed.TypedName Syntax.Dims+dimsDims = Typed.TypedName (Model.Name "hydra.java.syntax.Dims")++-- | DSL constructor for hydra.java.syntax.DoStatement+doStatement :: Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoStatement+doStatement body cond =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.DoStatement+doStatementBody :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Statement+doStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.DoStatement+doStatementCond :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Expression+doStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.DoStatement+doStatementDoStatement :: Typed.TypedName Syntax.DoStatement+doStatementDoStatement = Typed.TypedName (Model.Name "hydra.java.syntax.DoStatement")++-- | DSL updater for the body field of hydra.java.syntax.DoStatement+doStatementWithBody :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.DoStatement+doStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the cond field of hydra.java.syntax.DoStatement+doStatementWithCond :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.DoStatement+doStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.DoStatement"),+      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.java.syntax.DoStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the annotation variant of hydra.java.syntax.ElementValue+elementValueAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.ElementValue+elementValueAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ElementValue"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.ElementValueArrayInitializer wrapper+elementValueArrayInitializer :: Typed.TypedTerm [Syntax.ElementValue] -> Typed.TypedTerm Syntax.ElementValueArrayInitializer+elementValueArrayInitializer x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ElementValueArrayInitializer"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ElementValueArrayInitializer+elementValueArrayInitializerElementValueArrayInitializer :: Typed.TypedName Syntax.ElementValueArrayInitializer+elementValueArrayInitializerElementValueArrayInitializer =+    Typed.TypedName (Model.Name "hydra.java.syntax.ElementValueArrayInitializer")++-- | DSL injection for the conditionalExpression variant of hydra.java.syntax.ElementValue+elementValueConditionalExpression :: Typed.TypedTerm Syntax.ConditionalExpression -> Typed.TypedTerm Syntax.ElementValue+elementValueConditionalExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ElementValue"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "conditionalExpression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ElementValue+elementValueElementValue :: Typed.TypedName Syntax.ElementValue+elementValueElementValue = Typed.TypedName (Model.Name "hydra.java.syntax.ElementValue")++-- | DSL injection for the elementValueArrayInitializer variant of hydra.java.syntax.ElementValue+elementValueElementValueArrayInitializer :: Typed.TypedTerm Syntax.ElementValueArrayInitializer -> Typed.TypedTerm Syntax.ElementValue+elementValueElementValueArrayInitializer x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ElementValue"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "elementValueArrayInitializer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ElementValuePair+elementValuePair :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.ElementValuePair+elementValuePair key value =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ElementValuePair"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "key"),+          Model.fieldTerm = (Typed.unTypedTerm key)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))++-- | DSL name token for hydra.java.syntax.ElementValuePair+elementValuePairElementValuePair :: Typed.TypedName Syntax.ElementValuePair+elementValuePairElementValuePair = Typed.TypedName (Model.Name "hydra.java.syntax.ElementValuePair")++-- | DSL accessor for the key field of hydra.java.syntax.ElementValuePair+elementValuePairKey :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.Identifier+elementValuePairKey x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ElementValuePair"),+        Model.projectionFieldName = (Model.Name "key")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the value field of hydra.java.syntax.ElementValuePair+elementValuePairValue :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.ElementValue+elementValuePairValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ElementValuePair"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the key field of hydra.java.syntax.ElementValuePair+elementValuePairWithKey :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ElementValuePair+elementValuePairWithKey original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ElementValuePair"),+      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.java.syntax.ElementValuePair"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the value field of hydra.java.syntax.ElementValuePair+elementValuePairWithValue :: Typed.TypedTerm Syntax.ElementValuePair -> Typed.TypedTerm Syntax.ElementValue -> Typed.TypedTerm Syntax.ElementValuePair+elementValuePairWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ElementValuePair"),+      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.java.syntax.ElementValuePair"),+              Model.projectionFieldName = (Model.Name "key")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.EnhancedForCond+enhancedForCond :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.EnhancedForCond+enhancedForCond declaration expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "declaration"),+          Model.fieldTerm = (Typed.unTypedTerm declaration)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL accessor for the declaration field of hydra.java.syntax.EnhancedForCond+enhancedForCondDeclaration :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.LocalVariableDeclaration+enhancedForCondDeclaration x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+        Model.projectionFieldName = (Model.Name "declaration")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnhancedForCond+enhancedForCondEnhancedForCond :: Typed.TypedName Syntax.EnhancedForCond+enhancedForCondEnhancedForCond = Typed.TypedName (Model.Name "hydra.java.syntax.EnhancedForCond")++-- | DSL accessor for the expression field of hydra.java.syntax.EnhancedForCond+enhancedForCondExpression :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Expression+enhancedForCondExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the declaration field of hydra.java.syntax.EnhancedForCond+enhancedForCondWithDeclaration :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.EnhancedForCond+enhancedForCondWithDeclaration original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "declaration"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the expression field of hydra.java.syntax.EnhancedForCond+enhancedForCondWithExpression :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.EnhancedForCond+enhancedForCondWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "declaration"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForCond"),+              Model.projectionFieldName = (Model.Name "declaration")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.EnhancedForStatement+enhancedForStatement :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.EnhancedForStatement+enhancedForStatement cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.EnhancedForStatement+enhancedForStatementBody :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.Statement+enhancedForStatementBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.EnhancedForStatement+enhancedForStatementCond :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.EnhancedForCond+enhancedForStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnhancedForStatement+enhancedForStatementEnhancedForStatement :: Typed.TypedName Syntax.EnhancedForStatement+enhancedForStatementEnhancedForStatement = Typed.TypedName (Model.Name "hydra.java.syntax.EnhancedForStatement")++-- | DSL constructor for hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIf :: Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIf cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfBody :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+enhancedForStatementNoShortIfBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfCond :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForCond+enhancedForStatementNoShortIfCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfEnhancedForStatementNoShortIf :: Typed.TypedName Syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfEnhancedForStatementNoShortIf =+    Typed.TypedName (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf")++-- | DSL updater for the body field of hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf+enhancedForStatementNoShortIfWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.java.syntax.EnhancedForStatement+enhancedForStatementWithBody :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.EnhancedForStatement+enhancedForStatementWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.EnhancedForStatement+enhancedForStatementWithCond :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.EnhancedForCond -> Typed.TypedTerm Syntax.EnhancedForStatement+enhancedForStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnhancedForStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.EnumBody wrapper+enumBody :: Typed.TypedTerm [Syntax.EnumBody_Element] -> Typed.TypedTerm Syntax.EnumBody+enumBody x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.EnumBody"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnumBody+enumBodyEnumBody :: Typed.TypedName Syntax.EnumBody+enumBodyEnumBody = Typed.TypedName (Model.Name "hydra.java.syntax.EnumBody")++-- | DSL constructor for hydra.java.syntax.EnumBody_Element+enumBody_Element :: Typed.TypedTerm [Syntax.EnumConstant] -> Typed.TypedTerm [Syntax.ClassBodyDeclaration] -> Typed.TypedTerm Syntax.EnumBody_Element+enumBody_Element constants bodyDeclarations =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "constants"),+          Model.fieldTerm = (Typed.unTypedTerm constants)},+        Model.Field {+          Model.fieldName = (Model.Name "bodyDeclarations"),+          Model.fieldTerm = (Typed.unTypedTerm bodyDeclarations)}]}))++-- | DSL accessor for the bodyDeclarations field of hydra.java.syntax.EnumBody_Element+enumBody_ElementBodyDeclarations :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.ClassBodyDeclaration]+enumBody_ElementBodyDeclarations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+        Model.projectionFieldName = (Model.Name "bodyDeclarations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the constants field of hydra.java.syntax.EnumBody_Element+enumBody_ElementConstants :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.EnumConstant]+enumBody_ElementConstants x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+        Model.projectionFieldName = (Model.Name "constants")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnumBody_Element+enumBody_ElementEnumBody_Element :: Typed.TypedName Syntax.EnumBody_Element+enumBody_ElementEnumBody_Element = Typed.TypedName (Model.Name "hydra.java.syntax.EnumBody_Element")++-- | DSL updater for the bodyDeclarations field of hydra.java.syntax.EnumBody_Element+enumBody_ElementWithBodyDeclarations :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.ClassBodyDeclaration] -> Typed.TypedTerm Syntax.EnumBody_Element+enumBody_ElementWithBodyDeclarations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "constants"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+              Model.projectionFieldName = (Model.Name "constants")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "bodyDeclarations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the constants field of hydra.java.syntax.EnumBody_Element+enumBody_ElementWithConstants :: Typed.TypedTerm Syntax.EnumBody_Element -> Typed.TypedTerm [Syntax.EnumConstant] -> Typed.TypedTerm Syntax.EnumBody_Element+enumBody_ElementWithConstants original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "constants"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "bodyDeclarations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumBody_Element"),+              Model.projectionFieldName = (Model.Name "bodyDeclarations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.EnumConstant+enumConstant :: Typed.TypedTerm [Syntax.EnumConstantModifier] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe [Syntax.Expression]) -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.EnumConstant+enumConstant modifiers identifier arguments body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the arguments field of hydra.java.syntax.EnumConstant+enumConstantArguments :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe [Syntax.Expression])+enumConstantArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.java.syntax.EnumConstant+enumConstantBody :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe Syntax.ClassBody)+enumConstantBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnumConstant+enumConstantEnumConstant :: Typed.TypedName Syntax.EnumConstant+enumConstantEnumConstant = Typed.TypedName (Model.Name "hydra.java.syntax.EnumConstant")++-- | DSL accessor for the identifier field of hydra.java.syntax.EnumConstant+enumConstantIdentifier :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm Syntax.Identifier+enumConstantIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for the hydra.java.syntax.EnumConstantModifier wrapper+enumConstantModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.EnumConstantModifier+enumConstantModifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.EnumConstantModifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnumConstantModifier+enumConstantModifierEnumConstantModifier :: Typed.TypedName Syntax.EnumConstantModifier+enumConstantModifierEnumConstantModifier = Typed.TypedName (Model.Name "hydra.java.syntax.EnumConstantModifier")++-- | DSL accessor for the modifiers field of hydra.java.syntax.EnumConstant+enumConstantModifiers :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm [Syntax.EnumConstantModifier]+enumConstantModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the arguments field of hydra.java.syntax.EnumConstant+enumConstantWithArguments :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe [Syntax.Expression]) -> Typed.TypedTerm Syntax.EnumConstant+enumConstantWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.java.syntax.EnumConstant+enumConstantWithBody :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.EnumConstant+enumConstantWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.EnumConstant+enumConstantWithIdentifier :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.EnumConstant+enumConstantWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.EnumConstant+enumConstantWithModifiers :: Typed.TypedTerm Syntax.EnumConstant -> Typed.TypedTerm [Syntax.EnumConstantModifier] -> Typed.TypedTerm Syntax.EnumConstant+enumConstantWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumConstant"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.EnumDeclaration+enumDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm Syntax.EnumDeclaration+enumDeclaration modifiers identifier implements body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Typed.unTypedTerm implements)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.EnumDeclaration+enumDeclarationBody :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.EnumBody+enumDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.EnumDeclaration+enumDeclarationEnumDeclaration :: Typed.TypedName Syntax.EnumDeclaration+enumDeclarationEnumDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.EnumDeclaration")++-- | DSL accessor for the identifier field of hydra.java.syntax.EnumDeclaration+enumDeclarationIdentifier :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier+enumDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the implements field of hydra.java.syntax.EnumDeclaration+enumDeclarationImplements :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]+enumDeclarationImplements x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+        Model.projectionFieldName = (Model.Name "implements")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.EnumDeclaration+enumDeclarationModifiers :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]+enumDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.EnumDeclaration+enumDeclarationWithBody :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm Syntax.EnumDeclaration+enumDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.EnumDeclaration+enumDeclarationWithIdentifier :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.EnumDeclaration+enumDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the implements field of hydra.java.syntax.EnumDeclaration+enumDeclarationWithImplements :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.EnumDeclaration+enumDeclarationWithImplements original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          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.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.EnumDeclaration+enumDeclarationWithModifiers :: Typed.TypedTerm Syntax.EnumDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.EnumDeclaration+enumDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.EnumDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the equal variant of hydra.java.syntax.EqualityExpression+equalityExpressionEqual :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression+equalityExpressionEqual x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "equal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.EqualityExpression+equalityExpressionEqualityExpression :: Typed.TypedName Syntax.EqualityExpression+equalityExpressionEqualityExpression = Typed.TypedName (Model.Name "hydra.java.syntax.EqualityExpression")++-- | DSL injection for the notEqual variant of hydra.java.syntax.EqualityExpression+equalityExpressionNotEqual :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression+equalityExpressionNotEqual x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "notEqual"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unary variant of hydra.java.syntax.EqualityExpression+equalityExpressionUnary :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression+equalityExpressionUnary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.EqualityExpression_Binary+equalityExpression_Binary :: Typed.TypedTerm Syntax.EqualityExpression -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary+equalityExpression_Binary lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL name token for hydra.java.syntax.EqualityExpression_Binary+equalityExpression_BinaryEqualityExpression_Binary :: Typed.TypedName Syntax.EqualityExpression_Binary+equalityExpression_BinaryEqualityExpression_Binary =+    Typed.TypedName (Model.Name "hydra.java.syntax.EqualityExpression_Binary")++-- | DSL accessor for the lhs field of hydra.java.syntax.EqualityExpression_Binary+equalityExpression_BinaryLhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression+equalityExpression_BinaryLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.java.syntax.EqualityExpression_Binary+equalityExpression_BinaryRhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.RelationalExpression+equalityExpression_BinaryRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.EqualityExpression_Binary+equalityExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.EqualityExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary+equalityExpression_BinaryWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.EqualityExpression_Binary+equalityExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.EqualityExpression_Binary -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.EqualityExpression_Binary+equalityExpression_BinaryWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.EqualityExpression_Binary"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the class variant of hydra.java.syntax.ExceptionType+exceptionTypeClass :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.ExceptionType+exceptionTypeClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ExceptionType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ExceptionType+exceptionTypeExceptionType :: Typed.TypedName Syntax.ExceptionType+exceptionTypeExceptionType = Typed.TypedName (Model.Name "hydra.java.syntax.ExceptionType")++-- | DSL injection for the variable variant of hydra.java.syntax.ExceptionType+exceptionTypeVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ExceptionType+exceptionTypeVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ExceptionType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.ExclusiveOrExpression wrapper+exclusiveOrExpression :: Typed.TypedTerm [Syntax.AndExpression] -> Typed.TypedTerm Syntax.ExclusiveOrExpression+exclusiveOrExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ExclusiveOrExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ExclusiveOrExpression+exclusiveOrExpressionExclusiveOrExpression :: Typed.TypedName Syntax.ExclusiveOrExpression+exclusiveOrExpressionExclusiveOrExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ExclusiveOrExpression")++-- | DSL constructor for hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocation :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation+explicitConstructorInvocation typeArguments arguments variant =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm variant)}]}))++-- | DSL accessor for the arguments field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.Expression]+explicitConstructorInvocationArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationExplicitConstructorInvocation :: Typed.TypedName Syntax.ExplicitConstructorInvocation+explicitConstructorInvocationExplicitConstructorInvocation =+    Typed.TypedName (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation")++-- | DSL accessor for the typeArguments field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationTypeArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.TypeArgument]+explicitConstructorInvocationTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variant field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationVariant :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocationVariant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+        Model.projectionFieldName = (Model.Name "variant")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the arguments field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithTypeArguments :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          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.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variant field of hydra.java.syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithVariant :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation+explicitConstructorInvocationWithVariant original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            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.java.syntax.ExplicitConstructorInvocation"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant :: Typed.TypedName Syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantExplicitConstructorInvocation_Variant =+    Typed.TypedName (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant")++-- | DSL injection for the primary variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the super variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantSuper :: Typed.TypedTerm (Maybe Syntax.ExpressionName) -> Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantSuper x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "super"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the this variant of hydra.java.syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantThis :: Typed.TypedTerm Syntax.ExplicitConstructorInvocation_Variant+explicitConstructorInvocation_VariantThis =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "this"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the assignment variant of hydra.java.syntax.Expression+expressionAssignment :: Typed.TypedTerm Syntax.AssignmentExpression -> Typed.TypedTerm Syntax.Expression+expressionAssignment x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assignment"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.Expression+expressionExpression :: Typed.TypedName Syntax.Expression+expressionExpression = Typed.TypedName (Model.Name "hydra.java.syntax.Expression")++-- | DSL injection for the lambda variant of hydra.java.syntax.Expression+expressionLambda :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.Expression+expressionLambda x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Expression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lambda"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ExpressionName+expressionName :: Typed.TypedTerm (Maybe Syntax.AmbiguousName) -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExpressionName+expressionName qualifier identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm qualifier)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL name token for hydra.java.syntax.ExpressionName+expressionNameExpressionName :: Typed.TypedName Syntax.ExpressionName+expressionNameExpressionName = Typed.TypedName (Model.Name "hydra.java.syntax.ExpressionName")++-- | DSL accessor for the identifier field of hydra.java.syntax.ExpressionName+expressionNameIdentifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.Identifier+expressionNameIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualifier field of hydra.java.syntax.ExpressionName+expressionNameQualifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm (Maybe Syntax.AmbiguousName)+expressionNameQualifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+        Model.projectionFieldName = (Model.Name "qualifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.ExpressionName+expressionNameWithIdentifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ExpressionName+expressionNameWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the qualifier field of hydra.java.syntax.ExpressionName+expressionNameWithQualifier :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm (Maybe Syntax.AmbiguousName) -> Typed.TypedTerm Syntax.ExpressionName+expressionNameWithQualifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ExpressionName"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.ExpressionStatement wrapper+expressionStatement :: Typed.TypedTerm Syntax.StatementExpression -> Typed.TypedTerm Syntax.ExpressionStatement+expressionStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ExpressionStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ExpressionStatement+expressionStatementExpressionStatement :: Typed.TypedName Syntax.ExpressionStatement+expressionStatementExpressionStatement = Typed.TypedName (Model.Name "hydra.java.syntax.ExpressionStatement")++-- | DSL constructor for hydra.java.syntax.FieldAccess+fieldAccess :: Typed.TypedTerm Syntax.FieldAccess_Qualifier -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FieldAccess+fieldAccess qualifier identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm qualifier)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL name token for hydra.java.syntax.FieldAccess+fieldAccessFieldAccess :: Typed.TypedName Syntax.FieldAccess+fieldAccessFieldAccess = Typed.TypedName (Model.Name "hydra.java.syntax.FieldAccess")++-- | DSL accessor for the identifier field of hydra.java.syntax.FieldAccess+fieldAccessIdentifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.Identifier+fieldAccessIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualifier field of hydra.java.syntax.FieldAccess+fieldAccessQualifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.FieldAccess_Qualifier+fieldAccessQualifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+        Model.projectionFieldName = (Model.Name "qualifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.FieldAccess+fieldAccessWithIdentifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.FieldAccess+fieldAccessWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the qualifier field of hydra.java.syntax.FieldAccess+fieldAccessWithQualifier :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.FieldAccess_Qualifier -> Typed.TypedTerm Syntax.FieldAccess+fieldAccessWithQualifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.FieldAccess_Qualifier+fieldAccess_QualifierFieldAccess_Qualifier :: Typed.TypedName Syntax.FieldAccess_Qualifier+fieldAccess_QualifierFieldAccess_Qualifier = Typed.TypedName (Model.Name "hydra.java.syntax.FieldAccess_Qualifier")++-- | DSL injection for the primary variant of hydra.java.syntax.FieldAccess_Qualifier+fieldAccess_QualifierPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.FieldAccess_Qualifier+fieldAccess_QualifierPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess_Qualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the super variant of hydra.java.syntax.FieldAccess_Qualifier+fieldAccess_QualifierSuper :: Typed.TypedTerm Syntax.FieldAccess_Qualifier+fieldAccess_QualifierSuper =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess_Qualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "super"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the typed variant of hydra.java.syntax.FieldAccess_Qualifier+fieldAccess_QualifierTyped :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.FieldAccess_Qualifier+fieldAccess_QualifierTyped x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldAccess_Qualifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typed"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.FieldDeclaration+fieldDeclaration :: Typed.TypedTerm [Syntax.FieldModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.FieldDeclaration+fieldDeclaration modifiers unannType variableDeclarators =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Typed.unTypedTerm unannType)},+        Model.Field {+          Model.fieldName = (Model.Name "variableDeclarators"),+          Model.fieldTerm = (Typed.unTypedTerm variableDeclarators)}]}))++-- | DSL name token for hydra.java.syntax.FieldDeclaration+fieldDeclarationFieldDeclaration :: Typed.TypedName Syntax.FieldDeclaration+fieldDeclarationFieldDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.FieldDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.FieldDeclaration+fieldDeclarationModifiers :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.FieldModifier]+fieldDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the unannType field of hydra.java.syntax.FieldDeclaration+fieldDeclarationUnannType :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.UnannType+fieldDeclarationUnannType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+        Model.projectionFieldName = (Model.Name "unannType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variableDeclarators field of hydra.java.syntax.FieldDeclaration+fieldDeclarationVariableDeclarators :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]+fieldDeclarationVariableDeclarators x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+        Model.projectionFieldName = (Model.Name "variableDeclarators")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the modifiers field of hydra.java.syntax.FieldDeclaration+fieldDeclarationWithModifiers :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.FieldModifier] -> Typed.TypedTerm Syntax.FieldDeclaration+fieldDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "unannType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variableDeclarators"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "variableDeclarators")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the unannType field of hydra.java.syntax.FieldDeclaration+fieldDeclarationWithUnannType :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.FieldDeclaration+fieldDeclarationWithUnannType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "variableDeclarators"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "variableDeclarators")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variableDeclarators field of hydra.java.syntax.FieldDeclaration+fieldDeclarationWithVariableDeclarators :: Typed.TypedTerm Syntax.FieldDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.FieldDeclaration+fieldDeclarationWithVariableDeclarators original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FieldDeclaration"),+              Model.projectionFieldName = (Model.Name "unannType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "variableDeclarators"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the annotation variant of hydra.java.syntax.FieldModifier+fieldModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.FieldModifier+fieldModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.FieldModifier+fieldModifierFieldModifier :: Typed.TypedName Syntax.FieldModifier+fieldModifierFieldModifier = Typed.TypedName (Model.Name "hydra.java.syntax.FieldModifier")++-- | DSL injection for the final variant of hydra.java.syntax.FieldModifier+fieldModifierFinal :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierFinal =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "final"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the private variant of hydra.java.syntax.FieldModifier+fieldModifierPrivate :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the protected variant of hydra.java.syntax.FieldModifier+fieldModifierProtected :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierProtected =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "protected"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.FieldModifier+fieldModifierPublic :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.FieldModifier+fieldModifierStatic :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the transient variant of hydra.java.syntax.FieldModifier+fieldModifierTransient :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierTransient =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "transient"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the volatile variant of hydra.java.syntax.FieldModifier+fieldModifierVolatile :: Typed.TypedTerm Syntax.FieldModifier+fieldModifierVolatile =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FieldModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "volatile"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.Finally wrapper+finally :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Finally+finally x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Finally"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Finally+finallyFinally :: Typed.TypedName Syntax.Finally+finallyFinally = Typed.TypedName (Model.Name "hydra.java.syntax.Finally")++-- | DSL constructor for the hydra.java.syntax.FloatingPointLiteral wrapper+floatingPointLiteral :: Typed.TypedTerm Double -> Typed.TypedTerm Syntax.FloatingPointLiteral+floatingPointLiteral x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.FloatingPointLiteral"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.FloatingPointLiteral+floatingPointLiteralFloatingPointLiteral :: Typed.TypedName Syntax.FloatingPointLiteral+floatingPointLiteralFloatingPointLiteral = Typed.TypedName (Model.Name "hydra.java.syntax.FloatingPointLiteral")++-- | DSL injection for the double variant of hydra.java.syntax.FloatingPointType+floatingPointTypeDouble :: Typed.TypedTerm Syntax.FloatingPointType+floatingPointTypeDouble =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FloatingPointType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "double"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the float variant of hydra.java.syntax.FloatingPointType+floatingPointTypeFloat :: Typed.TypedTerm Syntax.FloatingPointType+floatingPointTypeFloat =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FloatingPointType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "float"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.FloatingPointType+floatingPointTypeFloatingPointType :: Typed.TypedName Syntax.FloatingPointType+floatingPointTypeFloatingPointType = Typed.TypedName (Model.Name "hydra.java.syntax.FloatingPointType")++-- | DSL constructor for hydra.java.syntax.ForCond+forCond :: Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm (Maybe Syntax.ForUpdate) -> Typed.TypedTerm Syntax.ForCond+forCond init cond update =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ForCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm init)},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Typed.unTypedTerm update)}]}))++-- | DSL accessor for the cond field of hydra.java.syntax.ForCond+forCondCond :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.Expression)+forCondCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ForCond"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ForCond+forCondForCond :: Typed.TypedName Syntax.ForCond+forCondForCond = Typed.TypedName (Model.Name "hydra.java.syntax.ForCond")++-- | DSL accessor for the init field of hydra.java.syntax.ForCond+forCondInit :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForInit)+forCondInit x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ForCond"),+        Model.projectionFieldName = (Model.Name "init")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the update field of hydra.java.syntax.ForCond+forCondUpdate :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForUpdate)+forCondUpdate x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ForCond"),+        Model.projectionFieldName = (Model.Name "update")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the cond field of hydra.java.syntax.ForCond+forCondWithCond :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ForCond+forCondWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ForCond"),+      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.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          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.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "update")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the init field of hydra.java.syntax.ForCond+forCondWithInit :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForInit) -> Typed.TypedTerm Syntax.ForCond+forCondWithInit original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ForCond"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "init"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "cond")})),+            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.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "update")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the update field of hydra.java.syntax.ForCond+forCondWithUpdate :: Typed.TypedTerm Syntax.ForCond -> Typed.TypedTerm (Maybe Syntax.ForUpdate) -> Typed.TypedTerm Syntax.ForCond+forCondWithUpdate original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ForCond"),+      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.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "init")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ForCond"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "update"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.ForInit+forInitForInit :: Typed.TypedName Syntax.ForInit+forInitForInit = Typed.TypedName (Model.Name "hydra.java.syntax.ForInit")++-- | DSL injection for the localVariable variant of hydra.java.syntax.ForInit+forInitLocalVariable :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.ForInit+forInitLocalVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForInit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "localVariable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the statements variant of hydra.java.syntax.ForInit+forInitStatements :: Typed.TypedTerm [Syntax.StatementExpression] -> Typed.TypedTerm Syntax.ForInit+forInitStatements x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForInit"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "statements"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the basic variant of hydra.java.syntax.ForStatement+forStatementBasic :: Typed.TypedTerm Syntax.BasicForStatement -> Typed.TypedTerm Syntax.ForStatement+forStatementBasic x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "basic"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the enhanced variant of hydra.java.syntax.ForStatement+forStatementEnhanced :: Typed.TypedTerm Syntax.EnhancedForStatement -> Typed.TypedTerm Syntax.ForStatement+forStatementEnhanced x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "enhanced"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ForStatement+forStatementForStatement :: Typed.TypedName Syntax.ForStatement+forStatementForStatement = Typed.TypedName (Model.Name "hydra.java.syntax.ForStatement")++-- | DSL injection for the basic variant of hydra.java.syntax.ForStatementNoShortIf+forStatementNoShortIfBasic :: Typed.TypedTerm Syntax.BasicForStatementNoShortIf -> Typed.TypedTerm Syntax.ForStatementNoShortIf+forStatementNoShortIfBasic x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForStatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "basic"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the enhanced variant of hydra.java.syntax.ForStatementNoShortIf+forStatementNoShortIfEnhanced :: Typed.TypedTerm Syntax.EnhancedForStatementNoShortIf -> Typed.TypedTerm Syntax.ForStatementNoShortIf+forStatementNoShortIfEnhanced x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ForStatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "enhanced"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ForStatementNoShortIf+forStatementNoShortIfForStatementNoShortIf :: Typed.TypedName Syntax.ForStatementNoShortIf+forStatementNoShortIfForStatementNoShortIf = Typed.TypedName (Model.Name "hydra.java.syntax.ForStatementNoShortIf")++-- | DSL constructor for the hydra.java.syntax.ForUpdate wrapper+forUpdate :: Typed.TypedTerm [Syntax.StatementExpression] -> Typed.TypedTerm Syntax.ForUpdate+forUpdate x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ForUpdate"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ForUpdate+forUpdateForUpdate :: Typed.TypedName Syntax.ForUpdate+forUpdateForUpdate = Typed.TypedName (Model.Name "hydra.java.syntax.ForUpdate")++-- | DSL name token for hydra.java.syntax.FormalParameter+formalParameterFormalParameter :: Typed.TypedName Syntax.FormalParameter+formalParameterFormalParameter = Typed.TypedName (Model.Name "hydra.java.syntax.FormalParameter")++-- | DSL injection for the simple variant of hydra.java.syntax.FormalParameter+formalParameterSimple :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.FormalParameter+formalParameterSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variableArity variant of hydra.java.syntax.FormalParameter+formalParameterVariableArity :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.FormalParameter+formalParameterVariableArity x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variableArity"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.FormalParameter_Simple+formalParameter_Simple :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.FormalParameter_Simple+formalParameter_Simple modifiers type_ id =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)}]}))++-- | DSL name token for hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleFormalParameter_Simple :: Typed.TypedName Syntax.FormalParameter_Simple+formalParameter_SimpleFormalParameter_Simple = Typed.TypedName (Model.Name "hydra.java.syntax.FormalParameter_Simple")++-- | DSL accessor for the id field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleId :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.VariableDeclaratorId+formalParameter_SimpleId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleModifiers :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm [Syntax.VariableModifier]+formalParameter_SimpleModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleType :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.UnannType+formalParameter_SimpleType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the id field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleWithId :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.FormalParameter_Simple+formalParameter_SimpleWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleWithModifiers :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.FormalParameter_Simple+formalParameter_SimpleWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.FormalParameter_Simple+formalParameter_SimpleWithType :: Typed.TypedTerm Syntax.FormalParameter_Simple -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.FormalParameter_Simple+formalParameter_SimpleWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.FormalParameter_Simple"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.Guard wrapper+guard :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Guard+guard x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Guard"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Guard+guardGuard :: Typed.TypedName Syntax.Guard+guardGuard = Typed.TypedName (Model.Name "hydra.java.syntax.Guard")++-- | DSL constructor for the hydra.java.syntax.Identifier wrapper+identifier :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Identifier+identifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Identifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Identifier+identifierIdentifier :: Typed.TypedName Syntax.Identifier+identifierIdentifier = Typed.TypedName (Model.Name "hydra.java.syntax.Identifier")++-- | DSL constructor for hydra.java.syntax.IfThenElseStatement+ifThenElseStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenElseStatement+ifThenElseStatement cond then_ else_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm then_)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))++-- | DSL accessor for the cond field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementCond :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+ifThenElseStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the else field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement+ifThenElseStatementElse x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+        Model.projectionFieldName = (Model.Name "else")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.IfThenElseStatement+ifThenElseStatementIfThenElseStatement :: Typed.TypedName Syntax.IfThenElseStatement+ifThenElseStatementIfThenElseStatement = Typed.TypedName (Model.Name "hydra.java.syntax.IfThenElseStatement")++-- | DSL constructor for hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIf :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIf cond then_ else_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm then_)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm else_)}]}))++-- | DSL accessor for the cond field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfCond :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression)+ifThenElseStatementNoShortIfCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the else field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+ifThenElseStatementNoShortIfElse x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "else")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf :: Typed.TypedName Syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfIfThenElseStatementNoShortIf =+    Typed.TypedName (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf")++-- | DSL accessor for the then field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfThen :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+ifThenElseStatementNoShortIfThen x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "then")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the cond field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the else field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithElse original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the then field of hydra.java.syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithThen :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf+ifThenElseStatementNoShortIfWithThen original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the then field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementThen :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.StatementNoShortIf+ifThenElseStatementThen x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+        Model.projectionFieldName = (Model.Name "then")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the cond field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementWithCond :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.IfThenElseStatement+ifThenElseStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the else field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementWithElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenElseStatement+ifThenElseStatementWithElse original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "then")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the then field of hydra.java.syntax.IfThenElseStatement+ifThenElseStatementWithThen :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.IfThenElseStatement+ifThenElseStatementWithThen original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "then"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "else"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenElseStatement"),+              Model.projectionFieldName = (Model.Name "else")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.IfThenStatement+ifThenStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenStatement+ifThenStatement expression statement =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm statement)}]}))++-- | DSL accessor for the expression field of hydra.java.syntax.IfThenStatement+ifThenStatementExpression :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Expression+ifThenStatementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.IfThenStatement+ifThenStatementIfThenStatement :: Typed.TypedName Syntax.IfThenStatement+ifThenStatementIfThenStatement = Typed.TypedName (Model.Name "hydra.java.syntax.IfThenStatement")++-- | DSL accessor for the statement field of hydra.java.syntax.IfThenStatement+ifThenStatementStatement :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement+ifThenStatementStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+        Model.projectionFieldName = (Model.Name "statement")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.IfThenStatement+ifThenStatementWithExpression :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.IfThenStatement+ifThenStatementWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+              Model.projectionFieldName = (Model.Name "statement")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statement field of hydra.java.syntax.IfThenStatement+ifThenStatementWithStatement :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.IfThenStatement+ifThenStatementWithStatement original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.IfThenStatement"),+      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.java.syntax.IfThenStatement"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.ImportDeclaration+importDeclarationImportDeclaration :: Typed.TypedName Syntax.ImportDeclaration+importDeclarationImportDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ImportDeclaration")++-- | DSL injection for the singleStaticImport variant of hydra.java.syntax.ImportDeclaration+importDeclarationSingleStaticImport :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationSingleStaticImport x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ImportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "singleStaticImport"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the singleType variant of hydra.java.syntax.ImportDeclaration+importDeclarationSingleType :: Typed.TypedTerm Syntax.SingleTypeImportDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationSingleType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ImportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "singleType"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the staticImportOnDemand variant of hydra.java.syntax.ImportDeclaration+importDeclarationStaticImportOnDemand :: Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationStaticImportOnDemand x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ImportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "staticImportOnDemand"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeImportOnDemand variant of hydra.java.syntax.ImportDeclaration+importDeclarationTypeImportOnDemand :: Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration -> Typed.TypedTerm Syntax.ImportDeclaration+importDeclarationTypeImportOnDemand x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ImportDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typeImportOnDemand"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.InclusiveOrExpression wrapper+inclusiveOrExpression :: Typed.TypedTerm [Syntax.ExclusiveOrExpression] -> Typed.TypedTerm Syntax.InclusiveOrExpression+inclusiveOrExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.InclusiveOrExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InclusiveOrExpression+inclusiveOrExpressionInclusiveOrExpression :: Typed.TypedName Syntax.InclusiveOrExpression+inclusiveOrExpressionInclusiveOrExpression = Typed.TypedName (Model.Name "hydra.java.syntax.InclusiveOrExpression")++-- | DSL constructor for the hydra.java.syntax.InstanceInitializer wrapper+instanceInitializer :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.InstanceInitializer+instanceInitializer x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.InstanceInitializer"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InstanceInitializer+instanceInitializerInstanceInitializer :: Typed.TypedName Syntax.InstanceInitializer+instanceInitializerInstanceInitializer = Typed.TypedName (Model.Name "hydra.java.syntax.InstanceInitializer")++-- | DSL constructor for hydra.java.syntax.InstanceofExpression+instanceofExpression :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs -> Typed.TypedTerm Syntax.InstanceofExpression+instanceofExpression lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL name token for hydra.java.syntax.InstanceofExpression+instanceofExpressionInstanceofExpression :: Typed.TypedName Syntax.InstanceofExpression+instanceofExpressionInstanceofExpression = Typed.TypedName (Model.Name "hydra.java.syntax.InstanceofExpression")++-- | DSL accessor for the lhs field of hydra.java.syntax.InstanceofExpression+instanceofExpressionLhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression+instanceofExpressionLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.java.syntax.InstanceofExpression+instanceofExpressionRhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs+instanceofExpressionRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.InstanceofExpression+instanceofExpressionWithLhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.InstanceofExpression+instanceofExpressionWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.InstanceofExpression+instanceofExpressionWithRhs :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs -> Typed.TypedTerm Syntax.InstanceofExpression+instanceofExpressionWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.InstanceofExpression_Rhs+instanceofExpression_RhsInstanceofExpression_Rhs :: Typed.TypedName Syntax.InstanceofExpression_Rhs+instanceofExpression_RhsInstanceofExpression_Rhs =+    Typed.TypedName (Model.Name "hydra.java.syntax.InstanceofExpression_Rhs")++-- | DSL injection for the pattern variant of hydra.java.syntax.InstanceofExpression_Rhs+instanceofExpression_RhsPattern :: Typed.TypedTerm Syntax.Pattern -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs+instanceofExpression_RhsPattern x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression_Rhs"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "pattern"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the referenceType variant of hydra.java.syntax.InstanceofExpression_Rhs+instanceofExpression_RhsReferenceType :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.InstanceofExpression_Rhs+instanceofExpression_RhsReferenceType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InstanceofExpression_Rhs"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "referenceType"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.IntegerLiteral wrapper+integerLiteral :: Typed.TypedTerm Integer -> Typed.TypedTerm Syntax.IntegerLiteral+integerLiteral x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.IntegerLiteral"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.IntegerLiteral+integerLiteralIntegerLiteral :: Typed.TypedName Syntax.IntegerLiteral+integerLiteralIntegerLiteral = Typed.TypedName (Model.Name "hydra.java.syntax.IntegerLiteral")++-- | DSL injection for the byte variant of hydra.java.syntax.IntegralType+integralTypeByte :: Typed.TypedTerm Syntax.IntegralType+integralTypeByte =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.IntegralType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "byte"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the char variant of hydra.java.syntax.IntegralType+integralTypeChar :: Typed.TypedTerm Syntax.IntegralType+integralTypeChar =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.IntegralType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "char"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the int variant of hydra.java.syntax.IntegralType+integralTypeInt :: Typed.TypedTerm Syntax.IntegralType+integralTypeInt =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.IntegralType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "int"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.IntegralType+integralTypeIntegralType :: Typed.TypedName Syntax.IntegralType+integralTypeIntegralType = Typed.TypedName (Model.Name "hydra.java.syntax.IntegralType")++-- | DSL injection for the long variant of hydra.java.syntax.IntegralType+integralTypeLong :: Typed.TypedTerm Syntax.IntegralType+integralTypeLong =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.IntegralType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "long"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the short variant of hydra.java.syntax.IntegralType+integralTypeShort :: Typed.TypedTerm Syntax.IntegralType+integralTypeShort =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.IntegralType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "short"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.InterfaceBody wrapper+interfaceBody :: Typed.TypedTerm [Syntax.InterfaceMemberDeclarationWithComments] -> Typed.TypedTerm Syntax.InterfaceBody+interfaceBody x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.InterfaceBody"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InterfaceBody+interfaceBodyInterfaceBody :: Typed.TypedName Syntax.InterfaceBody+interfaceBodyInterfaceBody = Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceBody")++-- | DSL injection for the annotationInterface variant of hydra.java.syntax.InterfaceDeclaration+interfaceDeclarationAnnotationInterface :: Typed.TypedTerm Syntax.AnnotationInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationAnnotationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotationInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration :: Typed.TypedName Syntax.InterfaceDeclaration+interfaceDeclarationInterfaceDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceDeclaration")++-- | DSL injection for the normalInterface variant of hydra.java.syntax.InterfaceDeclaration+interfaceDeclarationNormalInterface :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceDeclaration+interfaceDeclarationNormalInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normalInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the class variant of hydra.java.syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the constant variant of hydra.java.syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationConstant :: Typed.TypedTerm Syntax.ConstantDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationConstant x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "constant"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.java.syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterfaceMemberDeclaration :: Typed.TypedName Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterfaceMemberDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceMemberDeclaration")++-- | DSL injection for the interfaceMethod variant of hydra.java.syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterfaceMethod :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationInterfaceMethod x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interfaceMethod"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithComments value comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm (Maybe String)+interfaceMemberDeclarationWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments :: Typed.TypedName Syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsInterfaceMemberDeclarationWithComments =+    Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments")++-- | DSL accessor for the value field of hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration+interfaceMemberDeclarationWithCommentsValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),+      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.java.syntax.InterfaceMemberDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.java.syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments -> Typed.TypedTerm Syntax.InterfaceMemberDeclaration -> Typed.TypedTerm Syntax.InterfaceMemberDeclarationWithComments+interfaceMemberDeclarationWithCommentsWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          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.java.syntax.InterfaceMemberDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclaration :: Typed.TypedTerm [Syntax.InterfaceMethodModifier] -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration+interfaceMethodDeclaration modifiers header body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Typed.unTypedTerm header)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationBody :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodBody+interfaceMethodDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the header field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationHeader :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader+interfaceMethodDeclarationHeader x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+        Model.projectionFieldName = (Model.Name "header")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationInterfaceMethodDeclaration :: Typed.TypedName Syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationInterfaceMethodDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationModifiers :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm [Syntax.InterfaceMethodModifier]+interfaceMethodDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithBody :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the header field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithHeader :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithHeader original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          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.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithModifiers :: Typed.TypedTerm Syntax.InterfaceMethodDeclaration -> Typed.TypedTerm [Syntax.InterfaceMethodModifier] -> Typed.TypedTerm Syntax.InterfaceMethodDeclaration+interfaceMethodDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            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.java.syntax.InterfaceMethodDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the abstract variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierAbstract :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierAbstract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "abstract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotation variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the default variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierDefault :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierDefault =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "default"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierInterfaceMethodModifier :: Typed.TypedName Syntax.InterfaceMethodModifier+interfaceMethodModifierInterfaceMethodModifier = Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceMethodModifier")++-- | DSL injection for the private variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierPrivate :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierPublic :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierStatic :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictfp variant of hydra.java.syntax.InterfaceMethodModifier+interfaceMethodModifierStrictfp :: Typed.TypedTerm Syntax.InterfaceMethodModifier+interfaceMethodModifierStrictfp =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceMethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictfp"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the abstract variant of hydra.java.syntax.InterfaceModifier+interfaceModifierAbstract :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierAbstract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "abstract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotation variant of hydra.java.syntax.InterfaceModifier+interfaceModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.InterfaceModifier+interfaceModifierInterfaceModifier :: Typed.TypedName Syntax.InterfaceModifier+interfaceModifierInterfaceModifier = Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceModifier")++-- | DSL injection for the nonSealed variant of hydra.java.syntax.InterfaceModifier+interfaceModifierNonSealed :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierNonSealed =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "nonSealed"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the private variant of hydra.java.syntax.InterfaceModifier+interfaceModifierPrivate :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the protected variant of hydra.java.syntax.InterfaceModifier+interfaceModifierProtected :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierProtected =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "protected"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.InterfaceModifier+interfaceModifierPublic :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the sealed variant of hydra.java.syntax.InterfaceModifier+interfaceModifierSealed :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierSealed =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "sealed"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.InterfaceModifier+interfaceModifierStatic :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictfp variant of hydra.java.syntax.InterfaceModifier+interfaceModifierStrictfp :: Typed.TypedTerm Syntax.InterfaceModifier+interfaceModifierStrictfp =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.InterfaceModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictfp"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.InterfaceType wrapper+interfaceType :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.InterfaceType+interfaceType x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.InterfaceType"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.InterfaceType+interfaceTypeInterfaceType :: Typed.TypedName Syntax.InterfaceType+interfaceTypeInterfaceType = Typed.TypedName (Model.Name "hydra.java.syntax.InterfaceType")++-- | DSL constructor for hydra.java.syntax.LabeledStatement+labeledStatement :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatement identifier statement =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm statement)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.LabeledStatement+labeledStatementIdentifier :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier+labeledStatementIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LabeledStatement+labeledStatementLabeledStatement :: Typed.TypedName Syntax.LabeledStatement+labeledStatementLabeledStatement = Typed.TypedName (Model.Name "hydra.java.syntax.LabeledStatement")++-- | DSL constructor for hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIf :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf+labeledStatementNoShortIf identifier statement =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm statement)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfIdentifier :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.Identifier+labeledStatementNoShortIfIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfLabeledStatementNoShortIf :: Typed.TypedName Syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfLabeledStatementNoShortIf =+    Typed.TypedName (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf")++-- | DSL accessor for the statement field of hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfStatement :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+labeledStatementNoShortIfStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "statement")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfWithIdentifier :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "statement")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statement field of hydra.java.syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfWithStatement :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.LabeledStatementNoShortIf+labeledStatementNoShortIfWithStatement original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the statement field of hydra.java.syntax.LabeledStatement+labeledStatementStatement :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+labeledStatementStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+        Model.projectionFieldName = (Model.Name "statement")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.LabeledStatement+labeledStatementWithIdentifier :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+              Model.projectionFieldName = (Model.Name "statement")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statement field of hydra.java.syntax.LabeledStatement+labeledStatementWithStatement :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.LabeledStatement+labeledStatementWithStatement original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LabeledStatement"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "statement"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the block variant of hydra.java.syntax.LambdaBody+lambdaBodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.LambdaBody+lambdaBodyBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.java.syntax.LambdaBody+lambdaBodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.LambdaBody+lambdaBodyExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.LambdaBody+lambdaBodyLambdaBody :: Typed.TypedName Syntax.LambdaBody+lambdaBodyLambdaBody = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaBody")++-- | DSL constructor for hydra.java.syntax.LambdaExpression+lambdaExpression :: Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.LambdaBody -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpression parameters body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.LambdaExpression+lambdaExpressionBody :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaBody+lambdaExpressionBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LambdaExpression+lambdaExpressionLambdaExpression :: Typed.TypedName Syntax.LambdaExpression+lambdaExpressionLambdaExpression = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaExpression")++-- | DSL accessor for the parameters field of hydra.java.syntax.LambdaExpression+lambdaExpressionParameters :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaParameters+lambdaExpressionParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.LambdaExpression+lambdaExpressionWithBody :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaBody -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpressionWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.LambdaExpression+lambdaExpressionWithParameters :: Typed.TypedTerm Syntax.LambdaExpression -> Typed.TypedTerm Syntax.LambdaParameters -> Typed.TypedTerm Syntax.LambdaExpression+lambdaExpressionWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          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.java.syntax.LambdaExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.LambdaParameter+lambdaParameterLambdaParameter :: Typed.TypedName Syntax.LambdaParameter+lambdaParameterLambdaParameter = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaParameter")++-- | DSL injection for the normal variant of hydra.java.syntax.LambdaParameter+lambdaParameterNormal :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameter+lambdaParameterNormal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.LambdaParameterType+lambdaParameterTypeLambdaParameterType :: Typed.TypedName Syntax.LambdaParameterType+lambdaParameterTypeLambdaParameterType = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaParameterType")++-- | DSL injection for the type variant of hydra.java.syntax.LambdaParameterType+lambdaParameterTypeType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.LambdaParameterType+lambdaParameterTypeType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameterType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the var variant of hydra.java.syntax.LambdaParameterType+lambdaParameterTypeVar :: Typed.TypedTerm Syntax.LambdaParameterType+lambdaParameterTypeVar =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameterType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "var"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the variableArity variant of hydra.java.syntax.LambdaParameter+lambdaParameterVariableArity :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.LambdaParameter+lambdaParameterVariableArity x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variableArity"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_Normal :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LambdaParameterType -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.LambdaParameter_Normal+lambdaParameter_Normal modifiers type_ id =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)}]}))++-- | DSL accessor for the id field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalId :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.VariableDeclaratorId+lambdaParameter_NormalId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalLambdaParameter_Normal :: Typed.TypedName Syntax.LambdaParameter_Normal+lambdaParameter_NormalLambdaParameter_Normal = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaParameter_Normal")++-- | DSL accessor for the modifiers field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalModifiers :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm [Syntax.VariableModifier]+lambdaParameter_NormalModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalType :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameterType+lambdaParameter_NormalType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the id field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalWithId :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.LambdaParameter_Normal+lambdaParameter_NormalWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalWithModifiers :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LambdaParameter_Normal+lambdaParameter_NormalWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.LambdaParameter_Normal+lambdaParameter_NormalWithType :: Typed.TypedTerm Syntax.LambdaParameter_Normal -> Typed.TypedTerm Syntax.LambdaParameterType -> Typed.TypedTerm Syntax.LambdaParameter_Normal+lambdaParameter_NormalWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameter_Normal"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.LambdaParameters+lambdaParametersLambdaParameters :: Typed.TypedName Syntax.LambdaParameters+lambdaParametersLambdaParameters = Typed.TypedName (Model.Name "hydra.java.syntax.LambdaParameters")++-- | DSL injection for the single variant of hydra.java.syntax.LambdaParameters+lambdaParametersSingle :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.LambdaParameters+lambdaParametersSingle x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameters"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "single"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tuple variant of hydra.java.syntax.LambdaParameters+lambdaParametersTuple :: Typed.TypedTerm [Syntax.LambdaParameters] -> Typed.TypedTerm Syntax.LambdaParameters+lambdaParametersTuple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LambdaParameters"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tuple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the arrayAccess variant of hydra.java.syntax.LeftHandSide+leftHandSideArrayAccess :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.LeftHandSide+leftHandSideArrayAccess x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LeftHandSide"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrayAccess"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expressionName variant of hydra.java.syntax.LeftHandSide+leftHandSideExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.LeftHandSide+leftHandSideExpressionName x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LeftHandSide"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expressionName"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the fieldAccess variant of hydra.java.syntax.LeftHandSide+leftHandSideFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.LeftHandSide+leftHandSideFieldAccess x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LeftHandSide"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "fieldAccess"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.LeftHandSide+leftHandSideLeftHandSide :: Typed.TypedName Syntax.LeftHandSide+leftHandSideLeftHandSide = Typed.TypedName (Model.Name "hydra.java.syntax.LeftHandSide")++-- | DSL injection for the boolean variant of hydra.java.syntax.Literal+literalBoolean :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.Literal+literalBoolean x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "boolean"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the character variant of hydra.java.syntax.Literal+literalCharacter :: Typed.TypedTerm Int -> Typed.TypedTerm Syntax.Literal+literalCharacter x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "character"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the floatingPoint variant of hydra.java.syntax.Literal+literalFloatingPoint :: Typed.TypedTerm Syntax.FloatingPointLiteral -> Typed.TypedTerm Syntax.Literal+literalFloatingPoint x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "floatingPoint"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the integer variant of hydra.java.syntax.Literal+literalInteger :: Typed.TypedTerm Syntax.IntegerLiteral -> Typed.TypedTerm Syntax.Literal+literalInteger x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "integer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.Literal+literalLiteral :: Typed.TypedName Syntax.Literal+literalLiteral = Typed.TypedName (Model.Name "hydra.java.syntax.Literal")++-- | DSL injection for the null variant of hydra.java.syntax.Literal+literalNull :: Typed.TypedTerm Syntax.Literal+literalNull =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "null"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the string variant of hydra.java.syntax.Literal+literalString :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm Syntax.Literal+literalString x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "string"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the textBlock variant of hydra.java.syntax.Literal+literalTextBlock :: Typed.TypedTerm Syntax.TextBlock -> Typed.TypedTerm Syntax.Literal+literalTextBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Literal"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "textBlock"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the class variant of hydra.java.syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration :: Typed.TypedName Syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationLocalClassOrInterfaceDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration")++-- | DSL injection for the normalInterface variant of hydra.java.syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationNormalInterface :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.LocalClassOrInterfaceDeclaration+localClassOrInterfaceDeclarationNormalInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "normalInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.LocalVariableDeclaration+localVariableDeclaration :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.LocalVariableDeclaration+localVariableDeclaration modifiers type_ declarators =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "declarators"),+          Model.fieldTerm = (Typed.unTypedTerm declarators)}]}))++-- | DSL accessor for the declarators field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationDeclarators :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator]+localVariableDeclarationDeclarators x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+        Model.projectionFieldName = (Model.Name "declarators")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationLocalVariableDeclaration :: Typed.TypedName Syntax.LocalVariableDeclaration+localVariableDeclarationLocalVariableDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.LocalVariableDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationModifiers :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableModifier]+localVariableDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for the hydra.java.syntax.LocalVariableDeclarationStatement wrapper+localVariableDeclarationStatement :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableDeclarationStatement+localVariableDeclarationStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclarationStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.LocalVariableDeclarationStatement+localVariableDeclarationStatementLocalVariableDeclarationStatement :: Typed.TypedName Syntax.LocalVariableDeclarationStatement+localVariableDeclarationStatementLocalVariableDeclarationStatement =+    Typed.TypedName (Model.Name "hydra.java.syntax.LocalVariableDeclarationStatement")++-- | DSL accessor for the type field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationType :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableType+localVariableDeclarationType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the declarators field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationWithDeclarators :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableDeclarator] -> Typed.TypedTerm Syntax.LocalVariableDeclaration+localVariableDeclarationWithDeclarators original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarators"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationWithModifiers :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableDeclaration+localVariableDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarators"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "declarators")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.LocalVariableDeclaration+localVariableDeclarationWithType :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.LocalVariableDeclaration+localVariableDeclarationWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "declarators"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableDeclaration"),+              Model.projectionFieldName = (Model.Name "declarators")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.LocalVariableType+localVariableTypeLocalVariableType :: Typed.TypedName Syntax.LocalVariableType+localVariableTypeLocalVariableType = Typed.TypedName (Model.Name "hydra.java.syntax.LocalVariableType")++-- | DSL injection for the type variant of hydra.java.syntax.LocalVariableType+localVariableTypeType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.LocalVariableType+localVariableTypeType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the var variant of hydra.java.syntax.LocalVariableType+localVariableTypeVar :: Typed.TypedTerm Syntax.LocalVariableType+localVariableTypeVar =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.LocalVariableType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "var"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.MarkerAnnotation wrapper+markerAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MarkerAnnotation+markerAnnotation x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.MarkerAnnotation"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MarkerAnnotation+markerAnnotationMarkerAnnotation :: Typed.TypedName Syntax.MarkerAnnotation+markerAnnotationMarkerAnnotation = Typed.TypedName (Model.Name "hydra.java.syntax.MarkerAnnotation")++-- | DSL injection for the block variant of hydra.java.syntax.MethodBody+methodBodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.MethodBody+methodBodyBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.MethodBody+methodBodyMethodBody :: Typed.TypedName Syntax.MethodBody+methodBodyMethodBody = Typed.TypedName (Model.Name "hydra.java.syntax.MethodBody")++-- | DSL injection for the none variant of hydra.java.syntax.MethodBody+methodBodyNone :: Typed.TypedTerm Syntax.MethodBody+methodBodyNone =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodBody"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "none"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for hydra.java.syntax.MethodDeclaration+methodDeclaration :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm [Syntax.MethodModifier] -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.MethodDeclaration+methodDeclaration annotations modifiers header body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Typed.unTypedTerm header)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.MethodDeclaration+methodDeclarationAnnotations :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.Annotation]+methodDeclarationAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.java.syntax.MethodDeclaration+methodDeclarationBody :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodBody+methodDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the header field of hydra.java.syntax.MethodDeclaration+methodDeclarationHeader :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader+methodDeclarationHeader x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+        Model.projectionFieldName = (Model.Name "header")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodDeclaration+methodDeclarationMethodDeclaration :: Typed.TypedName Syntax.MethodDeclaration+methodDeclarationMethodDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.MethodDeclaration")++-- | DSL accessor for the modifiers field of hydra.java.syntax.MethodDeclaration+methodDeclarationModifiers :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.MethodModifier]+methodDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.MethodDeclaration+methodDeclarationWithAnnotations :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.MethodDeclaration+methodDeclarationWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            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.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.java.syntax.MethodDeclaration+methodDeclarationWithBody :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodBody -> Typed.TypedTerm Syntax.MethodDeclaration+methodDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the header field of hydra.java.syntax.MethodDeclaration+methodDeclarationWithHeader :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclaration+methodDeclarationWithHeader original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          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.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.MethodDeclaration+methodDeclarationWithModifiers :: Typed.TypedTerm Syntax.MethodDeclaration -> Typed.TypedTerm [Syntax.MethodModifier] -> Typed.TypedTerm Syntax.MethodDeclaration+methodDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            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.java.syntax.MethodDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodDeclarator+methodDeclarator :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.MethodDeclarator+methodDeclarator identifier receiverParameter formalParameters =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Typed.unTypedTerm receiverParameter)},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Typed.unTypedTerm formalParameters)}]}))++-- | DSL accessor for the formalParameters field of hydra.java.syntax.MethodDeclarator+methodDeclaratorFormalParameters :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm [Syntax.FormalParameter]+methodDeclaratorFormalParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+        Model.projectionFieldName = (Model.Name "formalParameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodDeclarator+methodDeclaratorIdentifier :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.Identifier+methodDeclaratorIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodDeclarator+methodDeclaratorMethodDeclarator :: Typed.TypedName Syntax.MethodDeclarator+methodDeclaratorMethodDeclarator = Typed.TypedName (Model.Name "hydra.java.syntax.MethodDeclarator")++-- | DSL accessor for the receiverParameter field of hydra.java.syntax.MethodDeclarator+methodDeclaratorReceiverParameter :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter)+methodDeclaratorReceiverParameter x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+        Model.projectionFieldName = (Model.Name "receiverParameter")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the formalParameters field of hydra.java.syntax.MethodDeclarator+methodDeclaratorWithFormalParameters :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm [Syntax.FormalParameter] -> Typed.TypedTerm Syntax.MethodDeclarator+methodDeclaratorWithFormalParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "receiverParameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodDeclarator+methodDeclaratorWithIdentifier :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodDeclarator+methodDeclaratorWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "receiverParameter")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "formalParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the receiverParameter field of hydra.java.syntax.MethodDeclarator+methodDeclaratorWithReceiverParameter :: Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.ReceiverParameter) -> Typed.TypedTerm Syntax.MethodDeclarator+methodDeclaratorWithReceiverParameter original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "receiverParameter"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "formalParameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodDeclarator"),+              Model.projectionFieldName = (Model.Name "formalParameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodHeader+methodHeader :: Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.Result -> Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.MethodHeader+methodHeader parameters result declarator throws =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "result"),+          Model.fieldTerm = (Typed.unTypedTerm result)},+        Model.Field {+          Model.fieldName = (Model.Name "declarator"),+          Model.fieldTerm = (Typed.unTypedTerm declarator)},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Typed.unTypedTerm throws)}]}))++-- | DSL accessor for the declarator field of hydra.java.syntax.MethodHeader+methodHeaderDeclarator :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclarator+methodHeaderDeclarator x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+        Model.projectionFieldName = (Model.Name "declarator")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodHeader+methodHeaderMethodHeader :: Typed.TypedName Syntax.MethodHeader+methodHeaderMethodHeader = Typed.TypedName (Model.Name "hydra.java.syntax.MethodHeader")++-- | DSL accessor for the parameters field of hydra.java.syntax.MethodHeader+methodHeaderParameters :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm [Syntax.TypeParameter]+methodHeaderParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the result field of hydra.java.syntax.MethodHeader+methodHeaderResult :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.Result+methodHeaderResult x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+        Model.projectionFieldName = (Model.Name "result")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the throws field of hydra.java.syntax.MethodHeader+methodHeaderThrows :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm (Maybe Syntax.Throws)+methodHeaderThrows x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+        Model.projectionFieldName = (Model.Name "throws")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the declarator field of hydra.java.syntax.MethodHeader+methodHeaderWithDeclarator :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.MethodDeclarator -> Typed.TypedTerm Syntax.MethodHeader+methodHeaderWithDeclarator original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "result"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "result")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarator"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "throws")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.MethodHeader+methodHeaderWithParameters :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.MethodHeader+methodHeaderWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "result"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "result")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "declarator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "throws")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the result field of hydra.java.syntax.MethodHeader+methodHeaderWithResult :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm Syntax.Result -> Typed.TypedTerm Syntax.MethodHeader+methodHeaderWithResult original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "result"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "declarator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "declarator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "throws")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the throws field of hydra.java.syntax.MethodHeader+methodHeaderWithThrows :: Typed.TypedTerm Syntax.MethodHeader -> Typed.TypedTerm (Maybe Syntax.Throws) -> Typed.TypedTerm Syntax.MethodHeader+methodHeaderWithThrows original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "result"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "result")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "declarator"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodHeader"),+              Model.projectionFieldName = (Model.Name "declarator")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "throws"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.MethodInvocation+methodInvocation :: Typed.TypedTerm Syntax.MethodInvocation_Header -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.MethodInvocation+methodInvocation header arguments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Typed.unTypedTerm header)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)}]}))++-- | DSL accessor for the arguments field of hydra.java.syntax.MethodInvocation+methodInvocationArguments :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm [Syntax.Expression]+methodInvocationArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the header field of hydra.java.syntax.MethodInvocation+methodInvocationHeader :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.MethodInvocation_Header+methodInvocationHeader x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+        Model.projectionFieldName = (Model.Name "header")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodInvocation+methodInvocationMethodInvocation :: Typed.TypedName Syntax.MethodInvocation+methodInvocationMethodInvocation = Typed.TypedName (Model.Name "hydra.java.syntax.MethodInvocation")++-- | DSL updater for the arguments field of hydra.java.syntax.MethodInvocation+methodInvocationWithArguments :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.MethodInvocation+methodInvocationWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the header field of hydra.java.syntax.MethodInvocation+methodInvocationWithHeader :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.MethodInvocation_Header -> Typed.TypedTerm Syntax.MethodInvocation+methodInvocationWithHeader original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          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.java.syntax.MethodInvocation"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodInvocation_Complex+methodInvocation_Complex :: Typed.TypedTerm Syntax.MethodInvocation_Variant -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodInvocation_Complex+methodInvocation_Complex variant typeArguments identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm variant)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexIdentifier :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.Identifier+methodInvocation_ComplexIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexMethodInvocation_Complex :: Typed.TypedName Syntax.MethodInvocation_Complex+methodInvocation_ComplexMethodInvocation_Complex =+    Typed.TypedName (Model.Name "hydra.java.syntax.MethodInvocation_Complex")++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexTypeArguments :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm [Syntax.TypeArgument]+methodInvocation_ComplexTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the variant field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexVariant :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_ComplexVariant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+        Model.projectionFieldName = (Model.Name "variant")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexWithIdentifier :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodInvocation_Complex+methodInvocation_ComplexWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexWithTypeArguments :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodInvocation_Complex+methodInvocation_ComplexWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "variant")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the variant field of hydra.java.syntax.MethodInvocation_Complex+methodInvocation_ComplexWithVariant :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Variant -> Typed.TypedTerm Syntax.MethodInvocation_Complex+methodInvocation_ComplexWithVariant original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "variant"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Complex"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the complex variant of hydra.java.syntax.MethodInvocation_Header+methodInvocation_HeaderComplex :: Typed.TypedTerm Syntax.MethodInvocation_Complex -> Typed.TypedTerm Syntax.MethodInvocation_Header+methodInvocation_HeaderComplex x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Header"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "complex"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.MethodInvocation_Header+methodInvocation_HeaderMethodInvocation_Header :: Typed.TypedName Syntax.MethodInvocation_Header+methodInvocation_HeaderMethodInvocation_Header = Typed.TypedName (Model.Name "hydra.java.syntax.MethodInvocation_Header")++-- | DSL injection for the simple variant of hydra.java.syntax.MethodInvocation_Header+methodInvocation_HeaderSimple :: Typed.TypedTerm Syntax.MethodName -> Typed.TypedTerm Syntax.MethodInvocation_Header+methodInvocation_HeaderSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Header"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantExpression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_VariantExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantMethodInvocation_Variant :: Typed.TypedName Syntax.MethodInvocation_Variant+methodInvocation_VariantMethodInvocation_Variant =+    Typed.TypedName (Model.Name "hydra.java.syntax.MethodInvocation_Variant")++-- | DSL injection for the primary variant of hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_VariantPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the super variant of hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantSuper :: Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_VariantSuper =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "super"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the type variant of hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantType :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_VariantType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the typeSuper variant of hydra.java.syntax.MethodInvocation_Variant+methodInvocation_VariantTypeSuper :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.MethodInvocation_Variant+methodInvocation_VariantTypeSuper x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodInvocation_Variant"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "typeSuper"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the abstract variant of hydra.java.syntax.MethodModifier+methodModifierAbstract :: Typed.TypedTerm Syntax.MethodModifier+methodModifierAbstract =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "abstract"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the annotation variant of hydra.java.syntax.MethodModifier+methodModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.MethodModifier+methodModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the final variant of hydra.java.syntax.MethodModifier+methodModifierFinal :: Typed.TypedTerm Syntax.MethodModifier+methodModifierFinal =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "final"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.MethodModifier+methodModifierMethodModifier :: Typed.TypedName Syntax.MethodModifier+methodModifierMethodModifier = Typed.TypedName (Model.Name "hydra.java.syntax.MethodModifier")++-- | DSL injection for the native variant of hydra.java.syntax.MethodModifier+methodModifierNative :: Typed.TypedTerm Syntax.MethodModifier+methodModifierNative =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "native"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the private variant of hydra.java.syntax.MethodModifier+methodModifierPrivate :: Typed.TypedTerm Syntax.MethodModifier+methodModifierPrivate =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "private"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the protected variant of hydra.java.syntax.MethodModifier+methodModifierProtected :: Typed.TypedTerm Syntax.MethodModifier+methodModifierProtected =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "protected"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the public variant of hydra.java.syntax.MethodModifier+methodModifierPublic :: Typed.TypedTerm Syntax.MethodModifier+methodModifierPublic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "public"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the static variant of hydra.java.syntax.MethodModifier+methodModifierStatic :: Typed.TypedTerm Syntax.MethodModifier+methodModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the strictfp variant of hydra.java.syntax.MethodModifier+methodModifierStrictfp :: Typed.TypedTerm Syntax.MethodModifier+methodModifierStrictfp =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "strictfp"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the synchronized variant of hydra.java.syntax.MethodModifier+methodModifierSynchronized :: Typed.TypedTerm Syntax.MethodModifier+methodModifierSynchronized =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "synchronized"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.MethodName wrapper+methodName :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodName+methodName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.MethodName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodName+methodNameMethodName :: Typed.TypedName Syntax.MethodName+methodNameMethodName = Typed.TypedName (Model.Name "hydra.java.syntax.MethodName")++-- | DSL injection for the array variant of hydra.java.syntax.MethodReference+methodReferenceArray :: Typed.TypedTerm Syntax.MethodReference_Array -> Typed.TypedTerm Syntax.MethodReference+methodReferenceArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.java.syntax.MethodReference+methodReferenceExpression :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.MethodReference+methodReferenceExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.MethodReference+methodReferenceMethodReference :: Typed.TypedName Syntax.MethodReference+methodReferenceMethodReference = Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference")++-- | DSL injection for the new variant of hydra.java.syntax.MethodReference+methodReferenceNew :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.MethodReference+methodReferenceNew x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "new"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the primary variant of hydra.java.syntax.MethodReference+methodReferencePrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.MethodReference+methodReferencePrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the referenceType variant of hydra.java.syntax.MethodReference+methodReferenceReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.MethodReference+methodReferenceReferenceType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "referenceType"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the super variant of hydra.java.syntax.MethodReference+methodReferenceSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.MethodReference+methodReferenceSuper x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MethodReference"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "super"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.MethodReference_Array wrapper+methodReference_Array :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.MethodReference_Array+methodReference_Array x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.MethodReference_Array"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_Array+methodReference_ArrayMethodReference_Array :: Typed.TypedName Syntax.MethodReference_Array+methodReference_ArrayMethodReference_Array = Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_Array")++-- | DSL constructor for hydra.java.syntax.MethodReference_Expression+methodReference_Expression :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Expression+methodReference_Expression name typeArguments identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionIdentifier :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.Identifier+methodReference_ExpressionIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionMethodReference_Expression :: Typed.TypedName Syntax.MethodReference_Expression+methodReference_ExpressionMethodReference_Expression =+    Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_Expression")++-- | DSL accessor for the name field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionName :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.ExpressionName+methodReference_ExpressionName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm [Syntax.TypeArgument]+methodReference_ExpressionTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Expression+methodReference_ExpressionWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+      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.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the name field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionWithName :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.MethodReference_Expression+methodReference_ExpressionWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Expression+methodReference_ExpressionWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Expression -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Expression+methodReference_ExpressionWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+      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.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Expression"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodReference_New+methodReference_New :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_New+methodReference_New classType typeArguments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "classType"),+          Model.fieldTerm = (Typed.unTypedTerm classType)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)}]}))++-- | DSL accessor for the classType field of hydra.java.syntax.MethodReference_New+methodReference_NewClassType :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.ClassType+methodReference_NewClassType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+        Model.projectionFieldName = (Model.Name "classType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_New+methodReference_NewMethodReference_New :: Typed.TypedName Syntax.MethodReference_New+methodReference_NewMethodReference_New = Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_New")++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_New+methodReference_NewTypeArguments :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm [Syntax.TypeArgument]+methodReference_NewTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the classType field of hydra.java.syntax.MethodReference_New+methodReference_NewWithClassType :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.MethodReference_New+methodReference_NewWithClassType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "classType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_New+methodReference_NewWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_New -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_New+methodReference_NewWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "classType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_New"),+              Model.projectionFieldName = (Model.Name "classType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.MethodReference_Primary+methodReference_Primary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Primary+methodReference_Primary primary typeArguments identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "primary"),+          Model.fieldTerm = (Typed.unTypedTerm primary)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryIdentifier :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Identifier+methodReference_PrimaryIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryMethodReference_Primary :: Typed.TypedName Syntax.MethodReference_Primary+methodReference_PrimaryMethodReference_Primary = Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_Primary")++-- | DSL accessor for the primary field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryPrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Primary+methodReference_PrimaryPrimary x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+        Model.projectionFieldName = (Model.Name "primary")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm [Syntax.TypeArgument]+methodReference_PrimaryTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Primary+methodReference_PrimaryWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "primary"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "primary")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the primary field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryWithPrimary :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.MethodReference_Primary+methodReference_PrimaryWithPrimary original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "primary"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Primary+methodReference_PrimaryWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Primary -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Primary+methodReference_PrimaryWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "primary"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "primary")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Primary"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceType :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_ReferenceType+methodReference_ReferenceType referenceType typeArguments identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "referenceType"),+          Model.fieldTerm = (Typed.unTypedTerm referenceType)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeIdentifier :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.Identifier+methodReference_ReferenceTypeIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeMethodReference_ReferenceType :: Typed.TypedName Syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeMethodReference_ReferenceType =+    Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_ReferenceType")++-- | DSL accessor for the referenceType field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.ReferenceType+methodReference_ReferenceTypeReferenceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+        Model.projectionFieldName = (Model.Name "referenceType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeTypeArguments :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument]+methodReference_ReferenceTypeTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "referenceType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "referenceType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the referenceType field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithReferenceType :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithReferenceType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "referenceType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_ReferenceType -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_ReferenceType+methodReference_ReferenceTypeWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "referenceType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "referenceType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_ReferenceType"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.MethodReference_Super+methodReference_Super :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodReference_Super+methodReference_Super typeArguments identifier super =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "super"),+          Model.fieldTerm = (Typed.unTypedTerm super)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.MethodReference_Super+methodReference_SuperIdentifier :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.Identifier+methodReference_SuperIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MethodReference_Super+methodReference_SuperMethodReference_Super :: Typed.TypedName Syntax.MethodReference_Super+methodReference_SuperMethodReference_Super = Typed.TypedName (Model.Name "hydra.java.syntax.MethodReference_Super")++-- | DSL accessor for the super field of hydra.java.syntax.MethodReference_Super+methodReference_SuperSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Bool+methodReference_SuperSuper x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+        Model.projectionFieldName = (Model.Name "super")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.MethodReference_Super+methodReference_SuperTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm [Syntax.TypeArgument]+methodReference_SuperTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.MethodReference_Super+methodReference_SuperWithIdentifier :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.MethodReference_Super+methodReference_SuperWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "super"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "super")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the super field of hydra.java.syntax.MethodReference_Super+methodReference_SuperWithSuper :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.MethodReference_Super+methodReference_SuperWithSuper original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "super"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.MethodReference_Super+methodReference_SuperWithTypeArguments :: Typed.TypedTerm Syntax.MethodReference_Super -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.MethodReference_Super+methodReference_SuperWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "super"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MethodReference_Super"),+              Model.projectionFieldName = (Model.Name "super")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ModularCompilationUnit+modularCompilationUnit :: Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Syntax.ModularCompilationUnit+modularCompilationUnit imports module_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm imports)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm module_)}]}))++-- | DSL accessor for the imports field of hydra.java.syntax.ModularCompilationUnit+modularCompilationUnitImports :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration]+modularCompilationUnitImports x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+        Model.projectionFieldName = (Model.Name "imports")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ModularCompilationUnit+modularCompilationUnitModularCompilationUnit :: Typed.TypedName Syntax.ModularCompilationUnit+modularCompilationUnitModularCompilationUnit = Typed.TypedName (Model.Name "hydra.java.syntax.ModularCompilationUnit")++-- | DSL accessor for the module field of hydra.java.syntax.ModularCompilationUnit+modularCompilationUnitModule :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.ModuleDeclaration+modularCompilationUnitModule x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+        Model.projectionFieldName = (Model.Name "module")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the imports field of hydra.java.syntax.ModularCompilationUnit+modularCompilationUnitWithImports :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.ModularCompilationUnit+modularCompilationUnitWithImports original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+              Model.projectionFieldName = (Model.Name "module")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the module field of hydra.java.syntax.ModularCompilationUnit+modularCompilationUnitWithModule :: Typed.TypedTerm Syntax.ModularCompilationUnit -> Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Syntax.ModularCompilationUnit+modularCompilationUnitWithModule original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModularCompilationUnit"),+              Model.projectionFieldName = (Model.Name "imports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.ModuleDeclaration+moduleDeclaration :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Bool -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm [Syntax.ModuleDirective] -> Typed.TypedTerm Syntax.ModuleDeclaration+moduleDeclaration annotations open identifiers directives =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "open"),+          Model.fieldTerm = (Typed.unTypedTerm open)},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm identifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "directives"),+          Model.fieldTerm = (Typed.unTypedTerm directives)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationAnnotations :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Annotation]+moduleDeclarationAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the directives field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationDirectives :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.ModuleDirective]+moduleDeclarationDirectives x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+        Model.projectionFieldName = (Model.Name "directives")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifiers field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationIdentifiers :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Identifier]+moduleDeclarationIdentifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+        Model.projectionFieldName = (Model.Name "identifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ModuleDeclaration+moduleDeclarationModuleDeclaration :: Typed.TypedName Syntax.ModuleDeclaration+moduleDeclarationModuleDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.ModuleDeclaration")++-- | DSL accessor for the open field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationOpen :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Bool+moduleDeclarationOpen x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+        Model.projectionFieldName = (Model.Name "open")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationWithAnnotations :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ModuleDeclaration+moduleDeclarationWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "open"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "open")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "identifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "directives"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "directives")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the directives field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationWithDirectives :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.ModuleDirective] -> Typed.TypedTerm Syntax.ModuleDeclaration+moduleDeclarationWithDirectives original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "open"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "open")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "identifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "directives"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifiers field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationWithIdentifiers :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.ModuleDeclaration+moduleDeclarationWithIdentifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "open"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "open")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "directives"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "directives")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the open field of hydra.java.syntax.ModuleDeclaration+moduleDeclarationWithOpen :: Typed.TypedTerm Syntax.ModuleDeclaration -> Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.ModuleDeclaration+moduleDeclarationWithOpen original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "open"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "identifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "directives"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDeclaration"),+              Model.projectionFieldName = (Model.Name "directives")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the exports variant of hydra.java.syntax.ModuleDirective+moduleDirectiveExports :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.ModuleDirective+moduleDirectiveExports x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "exports"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ModuleDirective+moduleDirectiveModuleDirective :: Typed.TypedName Syntax.ModuleDirective+moduleDirectiveModuleDirective = Typed.TypedName (Model.Name "hydra.java.syntax.ModuleDirective")++-- | DSL injection for the opens variant of hydra.java.syntax.ModuleDirective+moduleDirectiveOpens :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.ModuleDirective+moduleDirectiveOpens x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "opens"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the provides variant of hydra.java.syntax.ModuleDirective+moduleDirectiveProvides :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.ModuleDirective+moduleDirectiveProvides x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "provides"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the requires variant of hydra.java.syntax.ModuleDirective+moduleDirectiveRequires :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleDirective+moduleDirectiveRequires x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "requires"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the uses variant of hydra.java.syntax.ModuleDirective+moduleDirectiveUses :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.ModuleDirective+moduleDirectiveUses x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "uses"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpens :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm [Syntax.ModuleName] -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpens package modules =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Typed.unTypedTerm package)},+        Model.Field {+          Model.fieldName = (Model.Name "modules"),+          Model.fieldTerm = (Typed.unTypedTerm modules)}]}))++-- | DSL name token for hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens :: Typed.TypedName Syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensModuleDirective_ExportsOrOpens =+    Typed.TypedName (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens")++-- | DSL accessor for the modules field of hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensModules :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm [Syntax.ModuleName]+moduleDirective_ExportsOrOpensModules x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+        Model.projectionFieldName = (Model.Name "modules")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the package field of hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensPackage :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.PackageName+moduleDirective_ExportsOrOpensPackage x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+        Model.projectionFieldName = (Model.Name "package")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the modules field of hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensWithModules :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm [Syntax.ModuleName] -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensWithModules original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+              Model.projectionFieldName = (Model.Name "package")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "modules"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the package field of hydra.java.syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensWithPackage :: Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens -> Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm Syntax.ModuleDirective_ExportsOrOpens+moduleDirective_ExportsOrOpensWithPackage original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "modules"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"),+              Model.projectionFieldName = (Model.Name "modules")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ModuleDirective_Provides+moduleDirective_Provides :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ModuleDirective_Provides+moduleDirective_Provides to with =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "to"),+          Model.fieldTerm = (Typed.unTypedTerm to)},+        Model.Field {+          Model.fieldName = (Model.Name "with"),+          Model.fieldTerm = (Typed.unTypedTerm with)}]}))++-- | DSL name token for hydra.java.syntax.ModuleDirective_Provides+moduleDirective_ProvidesModuleDirective_Provides :: Typed.TypedName Syntax.ModuleDirective_Provides+moduleDirective_ProvidesModuleDirective_Provides =+    Typed.TypedName (Model.Name "hydra.java.syntax.ModuleDirective_Provides")++-- | DSL accessor for the to field of hydra.java.syntax.ModuleDirective_Provides+moduleDirective_ProvidesTo :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.TypeName+moduleDirective_ProvidesTo x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+        Model.projectionFieldName = (Model.Name "to")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the with field of hydra.java.syntax.ModuleDirective_Provides+moduleDirective_ProvidesWith :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm [Syntax.TypeName]+moduleDirective_ProvidesWith x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+        Model.projectionFieldName = (Model.Name "with")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the to field of hydra.java.syntax.ModuleDirective_Provides+moduleDirective_ProvidesWithTo :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.ModuleDirective_Provides+moduleDirective_ProvidesWithTo original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "to"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "with"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+              Model.projectionFieldName = (Model.Name "with")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the with field of hydra.java.syntax.ModuleDirective_Provides+moduleDirective_ProvidesWithWith :: Typed.TypedTerm Syntax.ModuleDirective_Provides -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ModuleDirective_Provides+moduleDirective_ProvidesWithWith original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "to"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Provides"),+              Model.projectionFieldName = (Model.Name "to")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "with"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.ModuleDirective_Requires+moduleDirective_Requires :: Typed.TypedTerm [Syntax.RequiresModifier] -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleDirective_Requires+moduleDirective_Requires modifiers module_ =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm module_)}]}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.ModuleDirective_Requires+moduleDirective_RequiresModifiers :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm [Syntax.RequiresModifier]+moduleDirective_RequiresModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the module field of hydra.java.syntax.ModuleDirective_Requires+moduleDirective_RequiresModule :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleName+moduleDirective_RequiresModule x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+        Model.projectionFieldName = (Model.Name "module")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ModuleDirective_Requires+moduleDirective_RequiresModuleDirective_Requires :: Typed.TypedName Syntax.ModuleDirective_Requires+moduleDirective_RequiresModuleDirective_Requires =+    Typed.TypedName (Model.Name "hydra.java.syntax.ModuleDirective_Requires")++-- | DSL updater for the modifiers field of hydra.java.syntax.ModuleDirective_Requires+moduleDirective_RequiresWithModifiers :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm [Syntax.RequiresModifier] -> Typed.TypedTerm Syntax.ModuleDirective_Requires+moduleDirective_RequiresWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+              Model.projectionFieldName = (Model.Name "module")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the module field of hydra.java.syntax.ModuleDirective_Requires+moduleDirective_RequiresWithModule :: Typed.TypedTerm Syntax.ModuleDirective_Requires -> Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.ModuleDirective_Requires+moduleDirective_RequiresWithModule original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleDirective_Requires"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "module"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.ModuleName+moduleName :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.ModuleName+moduleName identifier name =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.ModuleName+moduleNameIdentifier :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Identifier+moduleNameIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ModuleName+moduleNameModuleName :: Typed.TypedName Syntax.ModuleName+moduleNameModuleName = Typed.TypedName (Model.Name "hydra.java.syntax.ModuleName")++-- | DSL accessor for the name field of hydra.java.syntax.ModuleName+moduleNameName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName)+moduleNameName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.ModuleName+moduleNameWithIdentifier :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.ModuleName+moduleNameWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the name field of hydra.java.syntax.ModuleName+moduleNameWithName :: Typed.TypedTerm Syntax.ModuleName -> Typed.TypedTerm (Maybe Syntax.ModuleName) -> Typed.TypedTerm Syntax.ModuleName+moduleNameWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ModuleName"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the divide variant of hydra.java.syntax.MultiplicativeExpression+multiplicativeExpressionDivide :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression+multiplicativeExpressionDivide x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "divide"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the mod variant of hydra.java.syntax.MultiplicativeExpression+multiplicativeExpressionMod :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression+multiplicativeExpressionMod x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "mod"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.MultiplicativeExpression+multiplicativeExpressionMultiplicativeExpression :: Typed.TypedName Syntax.MultiplicativeExpression+multiplicativeExpressionMultiplicativeExpression =+    Typed.TypedName (Model.Name "hydra.java.syntax.MultiplicativeExpression")++-- | DSL injection for the times variant of hydra.java.syntax.MultiplicativeExpression+multiplicativeExpressionTimes :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression+multiplicativeExpressionTimes x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "times"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unary variant of hydra.java.syntax.MultiplicativeExpression+multiplicativeExpressionUnary :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression+multiplicativeExpressionUnary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_Binary :: Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary+multiplicativeExpression_Binary lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryLhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression+multiplicativeExpression_BinaryLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryMultiplicativeExpression_Binary :: Typed.TypedName Syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryMultiplicativeExpression_Binary =+    Typed.TypedName (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary")++-- | DSL accessor for the rhs field of hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryRhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.UnaryExpression+multiplicativeExpression_BinaryRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.MultiplicativeExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.MultiplicativeExpression_Binary -> Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.MultiplicativeExpression_Binary+multiplicativeExpression_BinaryWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.NormalAnnotation+normalAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm [Syntax.ElementValuePair] -> Typed.TypedTerm Syntax.NormalAnnotation+normalAnnotation typeName pairs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Typed.unTypedTerm typeName)},+        Model.Field {+          Model.fieldName = (Model.Name "pairs"),+          Model.fieldTerm = (Typed.unTypedTerm pairs)}]}))++-- | DSL name token for hydra.java.syntax.NormalAnnotation+normalAnnotationNormalAnnotation :: Typed.TypedName Syntax.NormalAnnotation+normalAnnotationNormalAnnotation = Typed.TypedName (Model.Name "hydra.java.syntax.NormalAnnotation")++-- | DSL accessor for the pairs field of hydra.java.syntax.NormalAnnotation+normalAnnotationPairs :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm [Syntax.ElementValuePair]+normalAnnotationPairs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+        Model.projectionFieldName = (Model.Name "pairs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeName field of hydra.java.syntax.NormalAnnotation+normalAnnotationTypeName :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.TypeName+normalAnnotationTypeName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+        Model.projectionFieldName = (Model.Name "typeName")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the pairs field of hydra.java.syntax.NormalAnnotation+normalAnnotationWithPairs :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm [Syntax.ElementValuePair] -> Typed.TypedTerm Syntax.NormalAnnotation+normalAnnotationWithPairs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+              Model.projectionFieldName = (Model.Name "typeName")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "pairs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeName field of hydra.java.syntax.NormalAnnotation+normalAnnotationWithTypeName :: Typed.TypedTerm Syntax.NormalAnnotation -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.NormalAnnotation+normalAnnotationWithTypeName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "pairs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalAnnotation"),+              Model.projectionFieldName = (Model.Name "pairs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.NormalClassDeclaration+normalClassDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm (Maybe Syntax.ClassType) -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclaration modifiers identifier parameters extends implements permits body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm extends)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Typed.unTypedTerm implements)},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Typed.unTypedTerm permits)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationBody :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassBody+normalClassDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the extends field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationExtends :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm (Maybe Syntax.ClassType)+normalClassDeclarationExtends x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "extends")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationIdentifier :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier+normalClassDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the implements field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationImplements :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]+normalClassDeclarationImplements x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "implements")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationModifiers :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]+normalClassDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationNormalClassDeclaration :: Typed.TypedName Syntax.NormalClassDeclaration+normalClassDeclarationNormalClassDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.NormalClassDeclaration")++-- | DSL accessor for the parameters field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationParameters :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+normalClassDeclarationParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the permits field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationPermits :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeName]+normalClassDeclarationPermits x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+        Model.projectionFieldName = (Model.Name "permits")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithBody :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the extends field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithExtends :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm (Maybe Syntax.ClassType) -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithExtends original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithIdentifier :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the implements field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithImplements :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithImplements original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithModifiers :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithParameters :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the permits field of hydra.java.syntax.NormalClassDeclaration+normalClassDeclarationWithPermits :: Typed.TypedTerm Syntax.NormalClassDeclaration -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.NormalClassDeclaration+normalClassDeclarationWithPermits original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          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.java.syntax.NormalClassDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclaration :: Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclaration modifiers identifier parameters extends permits body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm extends)},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Typed.unTypedTerm permits)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationBody :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceBody+normalInterfaceDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the extends field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationExtends :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]+normalInterfaceDeclarationExtends x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "extends")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationIdentifier :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier+normalInterfaceDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationModifiers :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier]+normalInterfaceDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationNormalInterfaceDeclaration :: Typed.TypedName Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationNormalInterfaceDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration")++-- | DSL accessor for the parameters field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationParameters :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+normalInterfaceDeclarationParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the permits field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationPermits :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeName]+normalInterfaceDeclarationPermits x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+        Model.projectionFieldName = (Model.Name "permits")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the body field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithBody :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the extends field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithExtends :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithExtends original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "extends"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithIdentifier :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithModifiers :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.InterfaceModifier] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithParameters :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "permits")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the permits field of hydra.java.syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithPermits :: Typed.TypedTerm Syntax.NormalInterfaceDeclaration -> Typed.TypedTerm [Syntax.TypeName] -> Typed.TypedTerm Syntax.NormalInterfaceDeclaration+normalInterfaceDeclarationWithPermits original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "extends")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "permits"),+          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.java.syntax.NormalInterfaceDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.java.syntax.NumericTypeArray+numericTypeArrayArray :: Typed.TypedTerm Syntax.NumericTypeArray -> Typed.TypedTerm Syntax.NumericTypeArray+numericTypeArrayArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.NumericTypeArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.NumericTypeArray+numericTypeArrayNumericTypeArray :: Typed.TypedName Syntax.NumericTypeArray+numericTypeArrayNumericTypeArray = Typed.TypedName (Model.Name "hydra.java.syntax.NumericTypeArray")++-- | DSL injection for the simple variant of hydra.java.syntax.NumericTypeArray+numericTypeArraySimple :: Typed.TypedTerm Syntax.NumericType -> Typed.TypedTerm Syntax.NumericTypeArray+numericTypeArraySimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.NumericTypeArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the floatingPoint variant of hydra.java.syntax.NumericType+numericTypeFloatingPoint :: Typed.TypedTerm Syntax.FloatingPointType -> Typed.TypedTerm Syntax.NumericType+numericTypeFloatingPoint x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.NumericType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "floatingPoint"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the integral variant of hydra.java.syntax.NumericType+numericTypeIntegral :: Typed.TypedTerm Syntax.IntegralType -> Typed.TypedTerm Syntax.NumericType+numericTypeIntegral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.NumericType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "integral"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.NumericType+numericTypeNumericType :: Typed.TypedName Syntax.NumericType+numericTypeNumericType = Typed.TypedName (Model.Name "hydra.java.syntax.NumericType")++-- | DSL constructor for hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnit :: Typed.TypedTerm (Maybe Syntax.PackageDeclaration) -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit+ordinaryCompilationUnit package imports types =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Typed.unTypedTerm package)},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm imports)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm types)}]}))++-- | DSL accessor for the imports field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitImports :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration]+ordinaryCompilationUnitImports x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+        Model.projectionFieldName = (Model.Name "imports")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitOrdinaryCompilationUnit :: Typed.TypedName Syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitOrdinaryCompilationUnit = Typed.TypedName (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit")++-- | DSL accessor for the package field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitPackage :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm (Maybe Syntax.PackageDeclaration)+ordinaryCompilationUnitPackage x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+        Model.projectionFieldName = (Model.Name "package")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the types field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitTypes :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments]+ordinaryCompilationUnitTypes x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+        Model.projectionFieldName = (Model.Name "types")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the imports field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithImports :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.ImportDeclaration] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithImports original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "package")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "types")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the package field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithPackage :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm (Maybe Syntax.PackageDeclaration) -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithPackage original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "imports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "types")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the types field of hydra.java.syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithTypes :: Typed.TypedTerm Syntax.OrdinaryCompilationUnit -> Typed.TypedTerm [Syntax.TopLevelClassOrInterfaceDeclarationWithComments] -> Typed.TypedTerm Syntax.OrdinaryCompilationUnit+ordinaryCompilationUnitWithTypes original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "package"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "package")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "imports"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"),+              Model.projectionFieldName = (Model.Name "imports")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "types"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.PackageDeclaration+packageDeclaration :: Typed.TypedTerm [Syntax.PackageModifier] -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageDeclaration+packageDeclaration modifiers identifiers =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm identifiers)}]}))++-- | DSL accessor for the identifiers field of hydra.java.syntax.PackageDeclaration+packageDeclarationIdentifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.Identifier]+packageDeclarationIdentifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+        Model.projectionFieldName = (Model.Name "identifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.PackageDeclaration+packageDeclarationModifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.PackageModifier]+packageDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PackageDeclaration+packageDeclarationPackageDeclaration :: Typed.TypedName Syntax.PackageDeclaration+packageDeclarationPackageDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.PackageDeclaration")++-- | DSL updater for the identifiers field of hydra.java.syntax.PackageDeclaration+packageDeclarationWithIdentifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageDeclaration+packageDeclarationWithIdentifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.PackageDeclaration+packageDeclarationWithModifiers :: Typed.TypedTerm Syntax.PackageDeclaration -> Typed.TypedTerm [Syntax.PackageModifier] -> Typed.TypedTerm Syntax.PackageDeclaration+packageDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.PackageDeclaration"),+              Model.projectionFieldName = (Model.Name "identifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.PackageModifier wrapper+packageModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.PackageModifier+packageModifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PackageModifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PackageModifier+packageModifierPackageModifier :: Typed.TypedName Syntax.PackageModifier+packageModifierPackageModifier = Typed.TypedName (Model.Name "hydra.java.syntax.PackageModifier")++-- | DSL constructor for the hydra.java.syntax.PackageName wrapper+packageName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageName+packageName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PackageName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PackageName+packageNamePackageName :: Typed.TypedName Syntax.PackageName+packageNamePackageName = Typed.TypedName (Model.Name "hydra.java.syntax.PackageName")++-- | DSL constructor for the hydra.java.syntax.PackageOrTypeName wrapper+packageOrTypeName :: Typed.TypedTerm [Syntax.Identifier] -> Typed.TypedTerm Syntax.PackageOrTypeName+packageOrTypeName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PackageOrTypeName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PackageOrTypeName+packageOrTypeNamePackageOrTypeName :: Typed.TypedName Syntax.PackageOrTypeName+packageOrTypeNamePackageOrTypeName = Typed.TypedName (Model.Name "hydra.java.syntax.PackageOrTypeName")++-- | DSL name token for hydra.java.syntax.Pattern+patternPattern :: Typed.TypedName Syntax.Pattern+patternPattern = Typed.TypedName (Model.Name "hydra.java.syntax.Pattern")++-- | DSL injection for the record variant of hydra.java.syntax.Pattern+patternRecord :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.Pattern+patternRecord x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "record"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the type variant of hydra.java.syntax.Pattern+patternType :: Typed.TypedTerm Syntax.TypePattern -> Typed.TypedTerm Syntax.Pattern+patternType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Pattern"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.PostDecrementExpression wrapper+postDecrementExpression :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.PostDecrementExpression+postDecrementExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PostDecrementExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PostDecrementExpression+postDecrementExpressionPostDecrementExpression :: Typed.TypedName Syntax.PostDecrementExpression+postDecrementExpressionPostDecrementExpression = Typed.TypedName (Model.Name "hydra.java.syntax.PostDecrementExpression")++-- | DSL constructor for the hydra.java.syntax.PostIncrementExpression wrapper+postIncrementExpression :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.PostIncrementExpression+postIncrementExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PostIncrementExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PostIncrementExpression+postIncrementExpressionPostIncrementExpression :: Typed.TypedName Syntax.PostIncrementExpression+postIncrementExpressionPostIncrementExpression = Typed.TypedName (Model.Name "hydra.java.syntax.PostIncrementExpression")++-- | DSL injection for the name variant of hydra.java.syntax.PostfixExpression+postfixExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.PostfixExpression+postfixExpressionName x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PostfixExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "name"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the postDecrement variant of hydra.java.syntax.PostfixExpression+postfixExpressionPostDecrement :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.PostfixExpression+postfixExpressionPostDecrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PostfixExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "postDecrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the postIncrement variant of hydra.java.syntax.PostfixExpression+postfixExpressionPostIncrement :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.PostfixExpression+postfixExpressionPostIncrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PostfixExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "postIncrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.PostfixExpression+postfixExpressionPostfixExpression :: Typed.TypedName Syntax.PostfixExpression+postfixExpressionPostfixExpression = Typed.TypedName (Model.Name "hydra.java.syntax.PostfixExpression")++-- | DSL injection for the primary variant of hydra.java.syntax.PostfixExpression+postfixExpressionPrimary :: Typed.TypedTerm Syntax.Primary -> Typed.TypedTerm Syntax.PostfixExpression+postfixExpressionPrimary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PostfixExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.PreDecrementExpression wrapper+preDecrementExpression :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.PreDecrementExpression+preDecrementExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PreDecrementExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PreDecrementExpression+preDecrementExpressionPreDecrementExpression :: Typed.TypedName Syntax.PreDecrementExpression+preDecrementExpressionPreDecrementExpression = Typed.TypedName (Model.Name "hydra.java.syntax.PreDecrementExpression")++-- | DSL constructor for the hydra.java.syntax.PreIncrementExpression wrapper+preIncrementExpression :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.PreIncrementExpression+preIncrementExpression x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.PreIncrementExpression"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PreIncrementExpression+preIncrementExpressionPreIncrementExpression :: Typed.TypedName Syntax.PreIncrementExpression+preIncrementExpressionPreIncrementExpression = Typed.TypedName (Model.Name "hydra.java.syntax.PreIncrementExpression")++-- | DSL injection for the arrayCreation variant of hydra.java.syntax.Primary+primaryArrayCreation :: Typed.TypedTerm Syntax.ArrayCreationExpression -> Typed.TypedTerm Syntax.Primary+primaryArrayCreation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Primary"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrayCreation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the noNewArray variant of hydra.java.syntax.Primary+primaryNoNewArray :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression -> Typed.TypedTerm Syntax.Primary+primaryNoNewArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Primary"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "noNewArray"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the arrayAccess variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionArrayAccess :: Typed.TypedTerm Syntax.ArrayAccess -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionArrayAccess x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrayAccess"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classInstance variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionClassInstance :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionClassInstance x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classInstance"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classLiteral variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionClassLiteral :: Typed.TypedTerm Syntax.ClassLiteral -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionClassLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classLiteral"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the dotThis variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionDotThis :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionDotThis x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "dotThis"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the fieldAccess variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionFieldAccess x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "fieldAccess"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the literal variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionLiteral x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "literal"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the methodInvocation variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionMethodInvocation :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionMethodInvocation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "methodInvocation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the methodReference variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionMethodReference :: Typed.TypedTerm Syntax.MethodReference -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionMethodReference x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "methodReference"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the parens variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionParens :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionParens x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "parens"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionPrimaryNoNewArrayExpression :: Typed.TypedName Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionPrimaryNoNewArrayExpression =+    Typed.TypedName (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression")++-- | DSL injection for the this variant of hydra.java.syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionThis :: Typed.TypedTerm Syntax.PrimaryNoNewArrayExpression+primaryNoNewArrayExpressionThis =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "this"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.Primary+primaryPrimary :: Typed.TypedName Syntax.Primary+primaryPrimary = Typed.TypedName (Model.Name "hydra.java.syntax.Primary")++-- | DSL injection for the boolean variant of hydra.java.syntax.PrimitiveType+primitiveTypeBoolean :: Typed.TypedTerm Syntax.PrimitiveType+primitiveTypeBoolean =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "boolean"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the numeric variant of hydra.java.syntax.PrimitiveType+primitiveTypeNumeric :: Typed.TypedTerm Syntax.NumericType -> Typed.TypedTerm Syntax.PrimitiveType+primitiveTypeNumeric x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "numeric"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.PrimitiveType+primitiveTypePrimitiveType :: Typed.TypedName Syntax.PrimitiveType+primitiveTypePrimitiveType = Typed.TypedName (Model.Name "hydra.java.syntax.PrimitiveType")++-- | DSL constructor for hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotations :: Typed.TypedTerm Syntax.PrimitiveType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotations type_ annotations =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsAnnotations :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Annotation]+primitiveTypeWithAnnotationsAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations :: Typed.TypedName Syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsPrimitiveTypeWithAnnotations =+    Typed.TypedName (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations")++-- | DSL accessor for the type field of hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsType :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.PrimitiveType+primitiveTypeWithAnnotationsType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsWithAnnotations :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsWithType :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.PrimitiveType -> Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations+primitiveTypeWithAnnotationsWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.ReceiverParameter+receiverParameter :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ReceiverParameter+receiverParameter annotations unannType identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Typed.unTypedTerm unannType)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.ReceiverParameter+receiverParameterAnnotations :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm [Syntax.Annotation]+receiverParameterAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.ReceiverParameter+receiverParameterIdentifier :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm (Maybe Syntax.Identifier)+receiverParameterIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ReceiverParameter+receiverParameterReceiverParameter :: Typed.TypedName Syntax.ReceiverParameter+receiverParameterReceiverParameter = Typed.TypedName (Model.Name "hydra.java.syntax.ReceiverParameter")++-- | DSL accessor for the unannType field of hydra.java.syntax.ReceiverParameter+receiverParameterUnannType :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm Syntax.UnannType+receiverParameterUnannType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+        Model.projectionFieldName = (Model.Name "unannType")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.ReceiverParameter+receiverParameterWithAnnotations :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.ReceiverParameter+receiverParameterWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "unannType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.ReceiverParameter+receiverParameterWithIdentifier :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm (Maybe Syntax.Identifier) -> Typed.TypedTerm Syntax.ReceiverParameter+receiverParameterWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "unannType")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the unannType field of hydra.java.syntax.ReceiverParameter+receiverParameterWithUnannType :: Typed.TypedTerm Syntax.ReceiverParameter -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.ReceiverParameter+receiverParameterWithUnannType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "unannType"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ReceiverParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.RecordBody wrapper+recordBody :: Typed.TypedTerm [Syntax.RecordBodyDeclaration] -> Typed.TypedTerm Syntax.RecordBody+recordBody x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.RecordBody"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL injection for the classBody variant of hydra.java.syntax.RecordBodyDeclaration+recordBodyDeclarationClassBody :: Typed.TypedTerm Syntax.ClassBodyDeclaration -> Typed.TypedTerm Syntax.RecordBodyDeclaration+recordBodyDeclarationClassBody x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RecordBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classBody"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the compactConstructor variant of hydra.java.syntax.RecordBodyDeclaration+recordBodyDeclarationCompactConstructor :: Typed.TypedTerm Syntax.CompactConstructorDeclaration -> Typed.TypedTerm Syntax.RecordBodyDeclaration+recordBodyDeclarationCompactConstructor x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RecordBodyDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "compactConstructor"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.RecordBodyDeclaration+recordBodyDeclarationRecordBodyDeclaration :: Typed.TypedName Syntax.RecordBodyDeclaration+recordBodyDeclarationRecordBodyDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.RecordBodyDeclaration")++-- | DSL name token for hydra.java.syntax.RecordBody+recordBodyRecordBody :: Typed.TypedName Syntax.RecordBody+recordBodyRecordBody = Typed.TypedName (Model.Name "hydra.java.syntax.RecordBody")++-- | DSL constructor for the hydra.java.syntax.RecordComponentModifier wrapper+recordComponentModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.RecordComponentModifier+recordComponentModifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.RecordComponentModifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RecordComponentModifier+recordComponentModifierRecordComponentModifier :: Typed.TypedName Syntax.RecordComponentModifier+recordComponentModifierRecordComponentModifier = Typed.TypedName (Model.Name "hydra.java.syntax.RecordComponentModifier")++-- | DSL name token for hydra.java.syntax.RecordComponent+recordComponentRecordComponent :: Typed.TypedName Syntax.RecordComponent+recordComponentRecordComponent = Typed.TypedName (Model.Name "hydra.java.syntax.RecordComponent")++-- | DSL injection for the simple variant of hydra.java.syntax.RecordComponent+recordComponentSimple :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.RecordComponent+recordComponentSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the variableArity variant of hydra.java.syntax.RecordComponent+recordComponentVariableArity :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.RecordComponent+recordComponentVariableArity x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variableArity"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.RecordComponent_Simple+recordComponent_Simple :: Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.RecordComponent_Simple+recordComponent_Simple modifiers type_ identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleIdentifier :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.Identifier+recordComponent_SimpleIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleModifiers :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm [Syntax.RecordComponentModifier]+recordComponent_SimpleModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleRecordComponent_Simple :: Typed.TypedName Syntax.RecordComponent_Simple+recordComponent_SimpleRecordComponent_Simple = Typed.TypedName (Model.Name "hydra.java.syntax.RecordComponent_Simple")++-- | DSL accessor for the type field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleType :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.UnannType+recordComponent_SimpleType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleWithIdentifier :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.RecordComponent_Simple+recordComponent_SimpleWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleWithModifiers :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.RecordComponent_Simple+recordComponent_SimpleWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.RecordComponent_Simple+recordComponent_SimpleWithType :: Typed.TypedTerm Syntax.RecordComponent_Simple -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.RecordComponent_Simple+recordComponent_SimpleWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordComponent_Simple"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.RecordDeclaration+recordDeclaration :: Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclaration modifiers identifier parameters header implements body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm parameters)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Typed.unTypedTerm header)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Typed.unTypedTerm implements)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.RecordDeclaration+recordDeclarationBody :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordBody+recordDeclarationBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the header field of hydra.java.syntax.RecordDeclaration+recordDeclarationHeader :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordHeader+recordDeclarationHeader x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "header")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.RecordDeclaration+recordDeclarationIdentifier :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier+recordDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the implements field of hydra.java.syntax.RecordDeclaration+recordDeclarationImplements :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.InterfaceType]+recordDeclarationImplements x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "implements")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.RecordDeclaration+recordDeclarationModifiers :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.ClassModifier]+recordDeclarationModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the parameters field of hydra.java.syntax.RecordDeclaration+recordDeclarationParameters :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.TypeParameter]+recordDeclarationParameters x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+        Model.projectionFieldName = (Model.Name "parameters")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RecordDeclaration+recordDeclarationRecordDeclaration :: Typed.TypedName Syntax.RecordDeclaration+recordDeclarationRecordDeclaration = Typed.TypedName (Model.Name "hydra.java.syntax.RecordDeclaration")++-- | DSL updater for the body field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithBody :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the header field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithHeader :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithHeader original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithIdentifier :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the implements field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithImplements :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.InterfaceType] -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithImplements original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithModifiers :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.ClassModifier] -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "parameters")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the parameters field of hydra.java.syntax.RecordDeclaration+recordDeclarationWithParameters :: Typed.TypedTerm Syntax.RecordDeclaration -> Typed.TypedTerm [Syntax.TypeParameter] -> Typed.TypedTerm Syntax.RecordDeclaration+recordDeclarationWithParameters original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "parameters"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "header"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "header")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "implements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "implements")})),+            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.java.syntax.RecordDeclaration"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.RecordHeader wrapper+recordHeader :: Typed.TypedTerm [Syntax.RecordComponent] -> Typed.TypedTerm Syntax.RecordHeader+recordHeader x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.RecordHeader"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RecordHeader+recordHeaderRecordHeader :: Typed.TypedName Syntax.RecordHeader+recordHeaderRecordHeader = Typed.TypedName (Model.Name "hydra.java.syntax.RecordHeader")++-- | DSL constructor for hydra.java.syntax.RecordPattern+recordPattern :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.RecordPattern+recordPattern type_ patterns =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "patterns"),+          Model.fieldTerm = (Typed.unTypedTerm patterns)}]}))++-- | DSL accessor for the patterns field of hydra.java.syntax.RecordPattern+recordPatternPatterns :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.Pattern]+recordPatternPatterns x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+        Model.projectionFieldName = (Model.Name "patterns")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RecordPattern+recordPatternRecordPattern :: Typed.TypedName Syntax.RecordPattern+recordPatternRecordPattern = Typed.TypedName (Model.Name "hydra.java.syntax.RecordPattern")++-- | DSL accessor for the type field of hydra.java.syntax.RecordPattern+recordPatternType :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.ReferenceType+recordPatternType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the patterns field of hydra.java.syntax.RecordPattern+recordPatternWithPatterns :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm [Syntax.Pattern] -> Typed.TypedTerm Syntax.RecordPattern+recordPatternWithPatterns original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "patterns"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.RecordPattern+recordPatternWithType :: Typed.TypedTerm Syntax.RecordPattern -> Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.RecordPattern+recordPatternWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "patterns"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RecordPattern"),+              Model.projectionFieldName = (Model.Name "patterns")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the array variant of hydra.java.syntax.ReferenceType+referenceTypeArray :: Typed.TypedTerm Syntax.ArrayType -> Typed.TypedTerm Syntax.ReferenceType+referenceTypeArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ReferenceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classOrInterface variant of hydra.java.syntax.ReferenceType+referenceTypeClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.ReferenceType+referenceTypeClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ReferenceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.ReferenceType+referenceTypeReferenceType :: Typed.TypedName Syntax.ReferenceType+referenceTypeReferenceType = Typed.TypedName (Model.Name "hydra.java.syntax.ReferenceType")++-- | DSL injection for the variable variant of hydra.java.syntax.ReferenceType+referenceTypeVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.ReferenceType+referenceTypeVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ReferenceType"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the greaterThan variant of hydra.java.syntax.RelationalExpression+relationalExpressionGreaterThan :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionGreaterThan x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "greaterThan"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the greaterThanEqual variant of hydra.java.syntax.RelationalExpression+relationalExpressionGreaterThanEqual :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionGreaterThanEqual x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "greaterThanEqual"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the instanceofExpression variant of hydra.java.syntax.RelationalExpression+relationalExpressionInstanceofExpression :: Typed.TypedTerm Syntax.InstanceofExpression -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionInstanceofExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "instanceofExpression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lessThan variant of hydra.java.syntax.RelationalExpression+relationalExpressionLessThan :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionLessThan x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lessThan"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the lessThanEqual variant of hydra.java.syntax.RelationalExpression+relationalExpressionLessThanEqual :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionLessThanEqual x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "lessThanEqual"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.RelationalExpression+relationalExpressionRelationalExpression :: Typed.TypedName Syntax.RelationalExpression+relationalExpressionRelationalExpression = Typed.TypedName (Model.Name "hydra.java.syntax.RelationalExpression")++-- | DSL injection for the simple variant of hydra.java.syntax.RelationalExpression+relationalExpressionSimple :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpressionSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThan :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThan lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL constructor for hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqual :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqual lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpression_GreaterThanEqualLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual :: Typed.TypedName Syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualRelationalExpression_GreaterThanEqual =+    Typed.TypedName (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual")++-- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.ShiftExpression+relationalExpression_GreaterThanEqualRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThanEqual+relationalExpression_GreaterThanEqualWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpression_GreaterThanLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanRelationalExpression_GreaterThan :: Typed.TypedName Syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanRelationalExpression_GreaterThan =+    Typed.TypedName (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan")++-- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.ShiftExpression+relationalExpression_GreaterThanRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_GreaterThan -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_GreaterThan+relationalExpression_GreaterThanWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThan :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan+relationalExpression_LessThan lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL constructor for hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqual :: Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqual lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpression_LessThanEqualLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualRelationalExpression_LessThanEqual :: Typed.TypedName Syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualRelationalExpression_LessThanEqual =+    Typed.TypedName (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual")++-- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.ShiftExpression+relationalExpression_LessThanEqualRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThanEqual+relationalExpression_LessThanEqualWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThanLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression+relationalExpression_LessThanLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThanRelationalExpression_LessThan :: Typed.TypedName Syntax.RelationalExpression_LessThan+relationalExpression_LessThanRelationalExpression_LessThan =+    Typed.TypedName (Model.Name "hydra.java.syntax.RelationalExpression_LessThan")++-- | DSL accessor for the rhs field of hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThanRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.ShiftExpression+relationalExpression_LessThanRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the lhs field of hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThanWithLhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.RelationalExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan+relationalExpression_LessThanWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.RelationalExpression_LessThan+relationalExpression_LessThanWithRhs :: Typed.TypedTerm Syntax.RelationalExpression_LessThan -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.RelationalExpression_LessThan+relationalExpression_LessThanWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.RelationalExpression_LessThan"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.RequiresModifier+requiresModifierRequiresModifier :: Typed.TypedName Syntax.RequiresModifier+requiresModifierRequiresModifier = Typed.TypedName (Model.Name "hydra.java.syntax.RequiresModifier")++-- | DSL injection for the static variant of hydra.java.syntax.RequiresModifier+requiresModifierStatic :: Typed.TypedTerm Syntax.RequiresModifier+requiresModifierStatic =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RequiresModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "static"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the transitive variant of hydra.java.syntax.RequiresModifier+requiresModifierTransitive :: Typed.TypedTerm Syntax.RequiresModifier+requiresModifierTransitive =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.RequiresModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "transitive"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the local variant of hydra.java.syntax.Resource+resourceLocal :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Resource+resourceLocal x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Resource"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "local"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.Resource+resourceResource :: Typed.TypedName Syntax.Resource+resourceResource = Typed.TypedName (Model.Name "hydra.java.syntax.Resource")++-- | DSL constructor for the hydra.java.syntax.ResourceSpecification wrapper+resourceSpecification :: Typed.TypedTerm [Syntax.Resource] -> Typed.TypedTerm Syntax.ResourceSpecification+resourceSpecification x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ResourceSpecification"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ResourceSpecification+resourceSpecificationResourceSpecification :: Typed.TypedName Syntax.ResourceSpecification+resourceSpecificationResourceSpecification = Typed.TypedName (Model.Name "hydra.java.syntax.ResourceSpecification")++-- | DSL injection for the variable variant of hydra.java.syntax.Resource+resourceVariable :: Typed.TypedTerm Syntax.VariableAccess -> Typed.TypedTerm Syntax.Resource+resourceVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Resource"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.Resource_Local+resource_Local :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Resource_Local+resource_Local modifiers type_ identifier expression =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)}]}))++-- | DSL accessor for the expression field of hydra.java.syntax.Resource_Local+resource_LocalExpression :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Expression+resource_LocalExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.Resource_Local+resource_LocalIdentifier :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Identifier+resource_LocalIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.Resource_Local+resource_LocalModifiers :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm [Syntax.VariableModifier]+resource_LocalModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Resource_Local+resource_LocalResource_Local :: Typed.TypedName Syntax.Resource_Local+resource_LocalResource_Local = Typed.TypedName (Model.Name "hydra.java.syntax.Resource_Local")++-- | DSL accessor for the type field of hydra.java.syntax.Resource_Local+resource_LocalType :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.LocalVariableType+resource_LocalType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the expression field of hydra.java.syntax.Resource_Local+resource_LocalWithExpression :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Resource_Local+resource_LocalWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.Resource_Local+resource_LocalWithIdentifier :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.Resource_Local+resource_LocalWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.Resource_Local+resource_LocalWithModifiers :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.Resource_Local+resource_LocalWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.Resource_Local+resource_LocalWithType :: Typed.TypedTerm Syntax.Resource_Local -> Typed.TypedTerm Syntax.LocalVariableType -> Typed.TypedTerm Syntax.Resource_Local+resource_LocalWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Resource_Local"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.Result+resultResult :: Typed.TypedName Syntax.Result+resultResult = Typed.TypedName (Model.Name "hydra.java.syntax.Result")++-- | DSL injection for the type variant of hydra.java.syntax.Result+resultType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Result+resultType x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Result"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "type"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the void variant of hydra.java.syntax.Result+resultVoid :: Typed.TypedTerm Syntax.Result+resultVoid =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Result"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "void"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL constructor for the hydra.java.syntax.ReturnStatement wrapper+returnStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.ReturnStatement+returnStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.ReturnStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ReturnStatement+returnStatementReturnStatement :: Typed.TypedName Syntax.ReturnStatement+returnStatementReturnStatement = Typed.TypedName (Model.Name "hydra.java.syntax.ReturnStatement")++-- | DSL name token for hydra.java.syntax.ShiftExpression+shiftExpressionShiftExpression :: Typed.TypedName Syntax.ShiftExpression+shiftExpressionShiftExpression = Typed.TypedName (Model.Name "hydra.java.syntax.ShiftExpression")++-- | DSL injection for the shiftLeft variant of hydra.java.syntax.ShiftExpression+shiftExpressionShiftLeft :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression+shiftExpressionShiftLeft x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftLeft"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the shiftRight variant of hydra.java.syntax.ShiftExpression+shiftExpressionShiftRight :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression+shiftExpressionShiftRight x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftRight"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the shiftRightZeroFill variant of hydra.java.syntax.ShiftExpression+shiftExpressionShiftRightZeroFill :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression+shiftExpressionShiftRightZeroFill x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "shiftRightZeroFill"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the unary variant of hydra.java.syntax.ShiftExpression+shiftExpressionUnary :: Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression+shiftExpressionUnary x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "unary"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.ShiftExpression_Binary+shiftExpression_Binary :: Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary+shiftExpression_Binary lhs rhs =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm lhs)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm rhs)}]}))++-- | DSL accessor for the lhs field of hydra.java.syntax.ShiftExpression_Binary+shiftExpression_BinaryLhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression+shiftExpression_BinaryLhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+        Model.projectionFieldName = (Model.Name "lhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the rhs field of hydra.java.syntax.ShiftExpression_Binary+shiftExpression_BinaryRhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression+shiftExpression_BinaryRhs x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+        Model.projectionFieldName = (Model.Name "rhs")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ShiftExpression_Binary+shiftExpression_BinaryShiftExpression_Binary :: Typed.TypedName Syntax.ShiftExpression_Binary+shiftExpression_BinaryShiftExpression_Binary = Typed.TypedName (Model.Name "hydra.java.syntax.ShiftExpression_Binary")++-- | DSL updater for the lhs field of hydra.java.syntax.ShiftExpression_Binary+shiftExpression_BinaryWithLhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.ShiftExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary+shiftExpression_BinaryWithLhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+              Model.projectionFieldName = (Model.Name "rhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the rhs field of hydra.java.syntax.ShiftExpression_Binary+shiftExpression_BinaryWithRhs :: Typed.TypedTerm Syntax.ShiftExpression_Binary -> Typed.TypedTerm Syntax.AdditiveExpression -> Typed.TypedTerm Syntax.ShiftExpression_Binary+shiftExpression_BinaryWithRhs original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "lhs"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.ShiftExpression_Binary"),+              Model.projectionFieldName = (Model.Name "lhs")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "rhs"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.SimpleTypeName wrapper+simpleTypeName :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.SimpleTypeName+simpleTypeName x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.SimpleTypeName"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SimpleTypeName+simpleTypeNameSimpleTypeName :: Typed.TypedName Syntax.SimpleTypeName+simpleTypeNameSimpleTypeName = Typed.TypedName (Model.Name "hydra.java.syntax.SimpleTypeName")++-- | DSL constructor for hydra.java.syntax.SingleElementAnnotation+singleElementAnnotation :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.ElementValue) -> Typed.TypedTerm Syntax.SingleElementAnnotation+singleElementAnnotation name value =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm name)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)}]}))++-- | DSL accessor for the name field of hydra.java.syntax.SingleElementAnnotation+singleElementAnnotationName :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.TypeName+singleElementAnnotationName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+        Model.projectionFieldName = (Model.Name "name")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SingleElementAnnotation+singleElementAnnotationSingleElementAnnotation :: Typed.TypedName Syntax.SingleElementAnnotation+singleElementAnnotationSingleElementAnnotation = Typed.TypedName (Model.Name "hydra.java.syntax.SingleElementAnnotation")++-- | DSL accessor for the value field of hydra.java.syntax.SingleElementAnnotation+singleElementAnnotationValue :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm (Maybe Syntax.ElementValue)+singleElementAnnotationValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the name field of hydra.java.syntax.SingleElementAnnotation+singleElementAnnotationWithName :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleElementAnnotation+singleElementAnnotationWithName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "name"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the value field of hydra.java.syntax.SingleElementAnnotation+singleElementAnnotationWithValue :: Typed.TypedTerm Syntax.SingleElementAnnotation -> Typed.TypedTerm (Maybe Syntax.ElementValue) -> Typed.TypedTerm Syntax.SingleElementAnnotation+singleElementAnnotationWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleElementAnnotation"),+      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.java.syntax.SingleElementAnnotation"),+              Model.projectionFieldName = (Model.Name "name")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration+singleStaticImportDeclaration typeName identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Typed.unTypedTerm typeName)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the identifier field of hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationIdentifier :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.Identifier+singleStaticImportDeclarationIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationSingleStaticImportDeclaration :: Typed.TypedName Syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationSingleStaticImportDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration")++-- | DSL accessor for the typeName field of hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationTypeName :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.TypeName+singleStaticImportDeclarationTypeName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+        Model.projectionFieldName = (Model.Name "typeName")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the identifier field of hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationWithIdentifier :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+              Model.projectionFieldName = (Model.Name "typeName")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the typeName field of hydra.java.syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationWithTypeName :: Typed.TypedTerm Syntax.SingleStaticImportDeclaration -> Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleStaticImportDeclaration+singleStaticImportDeclarationWithTypeName original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeName"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.SingleTypeImportDeclaration wrapper+singleTypeImportDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.SingleTypeImportDeclaration+singleTypeImportDeclaration x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.SingleTypeImportDeclaration"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SingleTypeImportDeclaration+singleTypeImportDeclarationSingleTypeImportDeclaration :: Typed.TypedName Syntax.SingleTypeImportDeclaration+singleTypeImportDeclarationSingleTypeImportDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.SingleTypeImportDeclaration")++-- | DSL injection for the assignment variant of hydra.java.syntax.StatementExpression+statementExpressionAssignment :: Typed.TypedTerm Syntax.Assignment -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionAssignment x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assignment"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the classInstanceCreation variant of hydra.java.syntax.StatementExpression+statementExpressionClassInstanceCreation :: Typed.TypedTerm Syntax.ClassInstanceCreationExpression -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionClassInstanceCreation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classInstanceCreation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the methodInvocation variant of hydra.java.syntax.StatementExpression+statementExpressionMethodInvocation :: Typed.TypedTerm Syntax.MethodInvocation -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionMethodInvocation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "methodInvocation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the postDecrement variant of hydra.java.syntax.StatementExpression+statementExpressionPostDecrement :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionPostDecrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "postDecrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the postIncrement variant of hydra.java.syntax.StatementExpression+statementExpressionPostIncrement :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionPostIncrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "postIncrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the preDecrement variant of hydra.java.syntax.StatementExpression+statementExpressionPreDecrement :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionPreDecrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "preDecrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the preIncrement variant of hydra.java.syntax.StatementExpression+statementExpressionPreIncrement :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.StatementExpression+statementExpressionPreIncrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "preIncrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.StatementExpression+statementExpressionStatementExpression :: Typed.TypedName Syntax.StatementExpression+statementExpressionStatementExpression = Typed.TypedName (Model.Name "hydra.java.syntax.StatementExpression")++-- | DSL injection for the for variant of hydra.java.syntax.Statement+statementFor :: Typed.TypedTerm Syntax.ForStatement -> Typed.TypedTerm Syntax.Statement+statementFor x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "for"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ifThen variant of hydra.java.syntax.Statement+statementIfThen :: Typed.TypedTerm Syntax.IfThenStatement -> Typed.TypedTerm Syntax.Statement+statementIfThen x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ifThen"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ifThenElse variant of hydra.java.syntax.Statement+statementIfThenElse :: Typed.TypedTerm Syntax.IfThenElseStatement -> Typed.TypedTerm Syntax.Statement+statementIfThenElse x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ifThenElse"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the labeled variant of hydra.java.syntax.Statement+statementLabeled :: Typed.TypedTerm Syntax.LabeledStatement -> Typed.TypedTerm Syntax.Statement+statementLabeled x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "labeled"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the for variant of hydra.java.syntax.StatementNoShortIf+statementNoShortIfFor :: Typed.TypedTerm Syntax.ForStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+statementNoShortIfFor x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "for"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the ifThenElse variant of hydra.java.syntax.StatementNoShortIf+statementNoShortIfIfThenElse :: Typed.TypedTerm Syntax.IfThenElseStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+statementNoShortIfIfThenElse x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "ifThenElse"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the labeled variant of hydra.java.syntax.StatementNoShortIf+statementNoShortIfLabeled :: Typed.TypedTerm Syntax.LabeledStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+statementNoShortIfLabeled x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "labeled"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.StatementNoShortIf+statementNoShortIfStatementNoShortIf :: Typed.TypedName Syntax.StatementNoShortIf+statementNoShortIfStatementNoShortIf = Typed.TypedName (Model.Name "hydra.java.syntax.StatementNoShortIf")++-- | DSL injection for the while variant of hydra.java.syntax.StatementNoShortIf+statementNoShortIfWhile :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+statementNoShortIfWhile x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "while"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the withoutTrailing variant of hydra.java.syntax.StatementNoShortIf+statementNoShortIfWithoutTrailing :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement -> Typed.TypedTerm Syntax.StatementNoShortIf+statementNoShortIfWithoutTrailing x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementNoShortIf"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "withoutTrailing"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.Statement+statementStatement :: Typed.TypedName Syntax.Statement+statementStatement = Typed.TypedName (Model.Name "hydra.java.syntax.Statement")++-- | DSL injection for the while variant of hydra.java.syntax.Statement+statementWhile :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm Syntax.Statement+statementWhile x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "while"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the withoutTrailing variant of hydra.java.syntax.Statement+statementWithoutTrailing :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement -> Typed.TypedTerm Syntax.Statement+statementWithoutTrailing x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Statement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "withoutTrailing"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the assert variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementAssert :: Typed.TypedTerm Syntax.AssertStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementAssert x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "assert"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the block variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the break variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementBreak :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementBreak x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "break"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the continue variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementContinue :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementContinue x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "continue"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the do variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementDo :: Typed.TypedTerm Syntax.DoStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementDo x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "do"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the empty variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementEmpty :: Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementEmpty =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "empty"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the expression variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementExpression :: Typed.TypedTerm Syntax.ExpressionStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the return variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementReturn :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementReturn x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "return"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement :: Typed.TypedName Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementStatementWithoutTrailingSubstatement =+    Typed.TypedName (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement")++-- | DSL injection for the switch variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementSwitch :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementSwitch x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "switch"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the synchronized variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementSynchronized :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementSynchronized x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "synchronized"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the throw variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementThrow x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "throw"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the try variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementTry :: Typed.TypedTerm Syntax.TryStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementTry x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "try"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the yield variant of hydra.java.syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementYield :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.StatementWithoutTrailingSubstatement+statementWithoutTrailingSubstatementYield x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "yield"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for the hydra.java.syntax.StaticImportOnDemandDeclaration wrapper+staticImportOnDemandDeclaration :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration+staticImportOnDemandDeclaration x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.StaticImportOnDemandDeclaration"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.StaticImportOnDemandDeclaration+staticImportOnDemandDeclarationStaticImportOnDemandDeclaration :: Typed.TypedName Syntax.StaticImportOnDemandDeclaration+staticImportOnDemandDeclarationStaticImportOnDemandDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.StaticImportOnDemandDeclaration")++-- | DSL constructor for the hydra.java.syntax.StaticInitializer wrapper+staticInitializer :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.StaticInitializer+staticInitializer x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.StaticInitializer"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.StaticInitializer+staticInitializerStaticInitializer :: Typed.TypedName Syntax.StaticInitializer+staticInitializerStaticInitializer = Typed.TypedName (Model.Name "hydra.java.syntax.StaticInitializer")++-- | DSL constructor for the hydra.java.syntax.StringLiteral wrapper+stringLiteral :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.StringLiteral+stringLiteral x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.StringLiteral"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.StringLiteral+stringLiteralStringLiteral :: Typed.TypedName Syntax.StringLiteral+stringLiteralStringLiteral = Typed.TypedName (Model.Name "hydra.java.syntax.StringLiteral")++-- | DSL injection for the legacy variant of hydra.java.syntax.SwitchBlock+switchBlockLegacy :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm Syntax.SwitchBlock+switchBlockLegacy x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "legacy"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the rules variant of hydra.java.syntax.SwitchBlock+switchBlockRules :: Typed.TypedTerm [Syntax.SwitchRule] -> Typed.TypedTerm Syntax.SwitchBlock+switchBlockRules x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "rules"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroup :: Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup+switchBlockStatementGroup labels statements =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "labels"),+          Model.fieldTerm = (Typed.unTypedTerm labels)},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Typed.unTypedTerm statements)}]}))++-- | DSL accessor for the labels field of hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroupLabels :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.SwitchLabel]+switchBlockStatementGroupLabels x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+        Model.projectionFieldName = (Model.Name "labels")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the statements field of hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroupStatements :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.BlockStatement]+switchBlockStatementGroupStatements x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+        Model.projectionFieldName = (Model.Name "statements")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroupSwitchBlockStatementGroup :: Typed.TypedName Syntax.SwitchBlockStatementGroup+switchBlockStatementGroupSwitchBlockStatementGroup =+    Typed.TypedName (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup")++-- | DSL updater for the labels field of hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroupWithLabels :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup+switchBlockStatementGroupWithLabels original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "labels"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+              Model.projectionFieldName = (Model.Name "statements")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the statements field of hydra.java.syntax.SwitchBlockStatementGroup+switchBlockStatementGroupWithStatements :: Typed.TypedTerm Syntax.SwitchBlockStatementGroup -> Typed.TypedTerm [Syntax.BlockStatement] -> Typed.TypedTerm Syntax.SwitchBlockStatementGroup+switchBlockStatementGroupWithStatements original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "labels"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"),+              Model.projectionFieldName = (Model.Name "labels")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "statements"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL name token for hydra.java.syntax.SwitchBlock+switchBlockSwitchBlock :: Typed.TypedName Syntax.SwitchBlock+switchBlockSwitchBlock = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchBlock")++-- | DSL constructor for hydra.java.syntax.SwitchBlock_Legacy+switchBlock_Legacy :: Typed.TypedTerm [Syntax.SwitchBlockStatementGroup] -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy+switchBlock_Legacy groups trailingLabels =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "groups"),+          Model.fieldTerm = (Typed.unTypedTerm groups)},+        Model.Field {+          Model.fieldName = (Model.Name "trailingLabels"),+          Model.fieldTerm = (Typed.unTypedTerm trailingLabels)}]}))++-- | DSL accessor for the groups field of hydra.java.syntax.SwitchBlock_Legacy+switchBlock_LegacyGroups :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchBlockStatementGroup]+switchBlock_LegacyGroups x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+        Model.projectionFieldName = (Model.Name "groups")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SwitchBlock_Legacy+switchBlock_LegacySwitchBlock_Legacy :: Typed.TypedName Syntax.SwitchBlock_Legacy+switchBlock_LegacySwitchBlock_Legacy = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchBlock_Legacy")++-- | DSL accessor for the trailingLabels field of hydra.java.syntax.SwitchBlock_Legacy+switchBlock_LegacyTrailingLabels :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchLabel]+switchBlock_LegacyTrailingLabels x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+        Model.projectionFieldName = (Model.Name "trailingLabels")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the groups field of hydra.java.syntax.SwitchBlock_Legacy+switchBlock_LegacyWithGroups :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchBlockStatementGroup] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy+switchBlock_LegacyWithGroups original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "groups"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "trailingLabels"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+              Model.projectionFieldName = (Model.Name "trailingLabels")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the trailingLabels field of hydra.java.syntax.SwitchBlock_Legacy+switchBlock_LegacyWithTrailingLabels :: Typed.TypedTerm Syntax.SwitchBlock_Legacy -> Typed.TypedTerm [Syntax.SwitchLabel] -> Typed.TypedTerm Syntax.SwitchBlock_Legacy+switchBlock_LegacyWithTrailingLabels original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "groups"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchBlock_Legacy"),+              Model.projectionFieldName = (Model.Name "groups")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "trailingLabels"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.SwitchExpression+switchExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchExpression+switchExpression cond block =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.SwitchExpression+switchExpressionBlock :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.SwitchBlock+switchExpressionBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.SwitchExpression+switchExpressionCond :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.Expression+switchExpressionCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SwitchExpression+switchExpressionSwitchExpression :: Typed.TypedName Syntax.SwitchExpression+switchExpressionSwitchExpression = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchExpression")++-- | DSL updater for the block field of hydra.java.syntax.SwitchExpression+switchExpressionWithBlock :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchExpression+switchExpressionWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.SwitchExpression+switchExpressionWithCond :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchExpression+switchExpressionWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchExpression"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the case variant of hydra.java.syntax.SwitchLabel+switchLabelCase :: Typed.TypedTerm [Syntax.CaseConstant] -> Typed.TypedTerm Syntax.SwitchLabel+switchLabelCase x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchLabel"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "case"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the casePattern variant of hydra.java.syntax.SwitchLabel+switchLabelCasePattern :: Typed.TypedTerm Syntax.CasePattern -> Typed.TypedTerm Syntax.SwitchLabel+switchLabelCasePattern x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchLabel"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "casePattern"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the default variant of hydra.java.syntax.SwitchLabel+switchLabelDefault :: Typed.TypedTerm Syntax.SwitchLabel+switchLabelDefault =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchLabel"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "default"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL injection for the null variant of hydra.java.syntax.SwitchLabel+switchLabelNull :: Typed.TypedTerm Bool -> Typed.TypedTerm Syntax.SwitchLabel+switchLabelNull x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchLabel"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "null"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.SwitchLabel+switchLabelSwitchLabel :: Typed.TypedName Syntax.SwitchLabel+switchLabelSwitchLabel = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchLabel")++-- | DSL constructor for hydra.java.syntax.SwitchRule+switchRule :: Typed.TypedTerm Syntax.SwitchLabel -> Typed.TypedTerm Syntax.SwitchRule_Body -> Typed.TypedTerm Syntax.SwitchRule+switchRule label body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchRule"),+      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.java.syntax.SwitchRule+switchRuleBody :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchRule_Body+switchRuleBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchRule"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the label field of hydra.java.syntax.SwitchRule+switchRuleLabel :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchLabel+switchRuleLabel x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchRule"),+        Model.projectionFieldName = (Model.Name "label")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SwitchRule+switchRuleSwitchRule :: Typed.TypedName Syntax.SwitchRule+switchRuleSwitchRule = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchRule")++-- | DSL updater for the body field of hydra.java.syntax.SwitchRule+switchRuleWithBody :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchRule_Body -> Typed.TypedTerm Syntax.SwitchRule+switchRuleWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchRule"),+      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.java.syntax.SwitchRule"),+              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.java.syntax.SwitchRule+switchRuleWithLabel :: Typed.TypedTerm Syntax.SwitchRule -> Typed.TypedTerm Syntax.SwitchLabel -> Typed.TypedTerm Syntax.SwitchRule+switchRuleWithLabel original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchRule"),+      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.java.syntax.SwitchRule"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the block variant of hydra.java.syntax.SwitchRule_Body+switchRule_BodyBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SwitchRule_Body+switchRule_BodyBlock x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchRule_Body"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "block"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.java.syntax.SwitchRule_Body+switchRule_BodyExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchRule_Body+switchRule_BodyExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchRule_Body"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.SwitchRule_Body+switchRule_BodySwitchRule_Body :: Typed.TypedName Syntax.SwitchRule_Body+switchRule_BodySwitchRule_Body = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchRule_Body")++-- | DSL injection for the throw variant of hydra.java.syntax.SwitchRule_Body+switchRule_BodyThrow :: Typed.TypedTerm Syntax.ThrowStatement -> Typed.TypedTerm Syntax.SwitchRule_Body+switchRule_BodyThrow x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.SwitchRule_Body"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "throw"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.SwitchStatement+switchStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchStatement+switchStatement cond block =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.SwitchStatement+switchStatementBlock :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.SwitchBlock+switchStatementBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.SwitchStatement+switchStatementCond :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression+switchStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SwitchStatement+switchStatementSwitchStatement :: Typed.TypedName Syntax.SwitchStatement+switchStatementSwitchStatement = Typed.TypedName (Model.Name "hydra.java.syntax.SwitchStatement")++-- | DSL updater for the block field of hydra.java.syntax.SwitchStatement+switchStatementWithBlock :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.SwitchBlock -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.SwitchStatement+switchStatementWithCond :: Typed.TypedTerm Syntax.SwitchStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SwitchStatement+switchStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SwitchStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.SynchronizedStatement+synchronizedStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SynchronizedStatement+synchronizedStatement expression block =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm expression)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.SynchronizedStatement+synchronizedStatementBlock :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Block+synchronizedStatementBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the expression field of hydra.java.syntax.SynchronizedStatement+synchronizedStatementExpression :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Expression+synchronizedStatementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+        Model.projectionFieldName = (Model.Name "expression")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.SynchronizedStatement+synchronizedStatementSynchronizedStatement :: Typed.TypedName Syntax.SynchronizedStatement+synchronizedStatementSynchronizedStatement = Typed.TypedName (Model.Name "hydra.java.syntax.SynchronizedStatement")++-- | DSL updater for the block field of hydra.java.syntax.SynchronizedStatement+synchronizedStatementWithBlock :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.SynchronizedStatement+synchronizedStatementWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+      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.java.syntax.SynchronizedStatement"),+              Model.projectionFieldName = (Model.Name "expression")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the expression field of hydra.java.syntax.SynchronizedStatement+synchronizedStatementWithExpression :: Typed.TypedTerm Syntax.SynchronizedStatement -> Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.SynchronizedStatement+synchronizedStatementWithExpression original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "expression"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.SynchronizedStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.TextBlock wrapper+textBlock :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.TextBlock+textBlock x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.TextBlock"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TextBlock+textBlockTextBlock :: Typed.TypedName Syntax.TextBlock+textBlockTextBlock = Typed.TypedName (Model.Name "hydra.java.syntax.TextBlock")++-- | DSL constructor for the hydra.java.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.java.syntax.ThrowStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.ThrowStatement+throwStatementThrowStatement :: Typed.TypedName Syntax.ThrowStatement+throwStatementThrowStatement = Typed.TypedName (Model.Name "hydra.java.syntax.ThrowStatement")++-- | DSL constructor for the hydra.java.syntax.Throws wrapper+throws :: Typed.TypedTerm [Syntax.ExceptionType] -> Typed.TypedTerm Syntax.Throws+throws x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.Throws"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.Throws+throwsThrows :: Typed.TypedName Syntax.Throws+throwsThrows = Typed.TypedName (Model.Name "hydra.java.syntax.Throws")++-- | DSL injection for the class variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationClass :: Typed.TypedTerm Syntax.ClassDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationClass x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "class"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the interface variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationInterface :: Typed.TypedTerm Syntax.InterfaceDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "interface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the none variant of hydra.java.syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationNone :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationNone =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "none"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration :: Typed.TypedName Syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationTopLevelClassOrInterfaceDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration")++-- | DSL constructor for hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithComments value comments =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          Model.fieldTerm = (Typed.unTypedTerm value)},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm comments)}]}))++-- | DSL accessor for the comments field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm (Maybe String)+topLevelClassOrInterfaceDeclarationWithCommentsComments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "comments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments :: Typed.TypedName Syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsTopLevelClassOrInterfaceDeclarationWithComments =+    Typed.TypedName (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments")++-- | DSL accessor for the value field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsValue :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration+topLevelClassOrInterfaceDeclarationWithCommentsValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+        Model.projectionFieldName = (Model.Name "value")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the comments field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsWithComments :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsWithComments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+      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.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "value")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "comments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the value field of hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsWithValue :: Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclaration -> Typed.TypedTerm Syntax.TopLevelClassOrInterfaceDeclarationWithComments+topLevelClassOrInterfaceDeclarationWithCommentsWithValue original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "value"),+          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.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"),+              Model.projectionFieldName = (Model.Name "comments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the simple variant of hydra.java.syntax.TryStatement+tryStatementSimple :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.TryStatement+tryStatementSimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TryStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.TryStatement+tryStatementTryStatement :: Typed.TypedName Syntax.TryStatement+tryStatementTryStatement = Typed.TypedName (Model.Name "hydra.java.syntax.TryStatement")++-- | DSL injection for the withFinally variant of hydra.java.syntax.TryStatement+tryStatementWithFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithFinally x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TryStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "withFinally"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the withResources variant of hydra.java.syntax.TryStatement+tryStatementWithResources :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.TryStatement+tryStatementWithResources x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TryStatement"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "withResources"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.TryStatement_Simple+tryStatement_Simple :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm Syntax.TryStatement_Simple+tryStatement_Simple block catches =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm catches)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.TryStatement_Simple+tryStatement_SimpleBlock :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Block+tryStatement_SimpleBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the catches field of hydra.java.syntax.TryStatement_Simple+tryStatement_SimpleCatches :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Catches+tryStatement_SimpleCatches x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+        Model.projectionFieldName = (Model.Name "catches")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TryStatement_Simple+tryStatement_SimpleTryStatement_Simple :: Typed.TypedName Syntax.TryStatement_Simple+tryStatement_SimpleTryStatement_Simple = Typed.TypedName (Model.Name "hydra.java.syntax.TryStatement_Simple")++-- | DSL updater for the block field of hydra.java.syntax.TryStatement_Simple+tryStatement_SimpleWithBlock :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryStatement_Simple+tryStatement_SimpleWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the catches field of hydra.java.syntax.TryStatement_Simple+tryStatement_SimpleWithCatches :: Typed.TypedTerm Syntax.TryStatement_Simple -> Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm Syntax.TryStatement_Simple+tryStatement_SimpleWithCatches original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_Simple"),+      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.java.syntax.TryStatement_Simple"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinally :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.TryStatement_WithFinally+tryStatement_WithFinally block catches finally =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm catches)},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Typed.unTypedTerm finally)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyBlock :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Block+tryStatement_WithFinallyBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the catches field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyCatches :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm (Maybe Syntax.Catches)+tryStatement_WithFinallyCatches x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+        Model.projectionFieldName = (Model.Name "catches")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the finally field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Finally+tryStatement_WithFinallyFinally x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+        Model.projectionFieldName = (Model.Name "finally")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyTryStatement_WithFinally :: Typed.TypedName Syntax.TryStatement_WithFinally+tryStatement_WithFinallyTryStatement_WithFinally =+    Typed.TypedName (Model.Name "hydra.java.syntax.TryStatement_WithFinally")++-- | DSL updater for the block field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithBlock :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "finally")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the catches field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithCatches :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithCatches original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+      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.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "finally")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the finally field of hydra.java.syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithFinally :: Typed.TypedTerm Syntax.TryStatement_WithFinally -> Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.TryStatement_WithFinally+tryStatement_WithFinallyWithFinally original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+      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.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryStatement_WithFinally"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatement :: Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm (Maybe Syntax.Finally) -> Typed.TypedTerm Syntax.TryWithResourcesStatement+tryWithResourcesStatement resourceSpecification block catches finally =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "resourceSpecification"),+          Model.fieldTerm = (Typed.unTypedTerm resourceSpecification)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm block)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm catches)},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Typed.unTypedTerm finally)}]}))++-- | DSL accessor for the block field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementBlock :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.Block+tryWithResourcesStatementBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+        Model.projectionFieldName = (Model.Name "block")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the catches field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementCatches :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Catches)+tryWithResourcesStatementCatches x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+        Model.projectionFieldName = (Model.Name "catches")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the finally field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementFinally :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Finally)+tryWithResourcesStatementFinally x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+        Model.projectionFieldName = (Model.Name "finally")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the resourceSpecification field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementResourceSpecification :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.ResourceSpecification+tryWithResourcesStatementResourceSpecification x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+        Model.projectionFieldName = (Model.Name "resourceSpecification")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementTryWithResourcesStatement :: Typed.TypedName Syntax.TryWithResourcesStatement+tryWithResourcesStatementTryWithResourcesStatement =+    Typed.TypedName (Model.Name "hydra.java.syntax.TryWithResourcesStatement")++-- | DSL updater for the block field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementWithBlock :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.Block -> Typed.TypedTerm Syntax.TryWithResourcesStatement+tryWithResourcesStatementWithBlock original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "resourceSpecification"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "resourceSpecification")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "finally")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the catches field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementWithCatches :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Catches) -> Typed.TypedTerm Syntax.TryWithResourcesStatement+tryWithResourcesStatementWithCatches original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "resourceSpecification"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "resourceSpecification")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "finally")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the finally field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementWithFinally :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm (Maybe Syntax.Finally) -> Typed.TypedTerm Syntax.TryWithResourcesStatement+tryWithResourcesStatementWithFinally original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "resourceSpecification"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "resourceSpecification")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the resourceSpecification field of hydra.java.syntax.TryWithResourcesStatement+tryWithResourcesStatementWithResourceSpecification :: Typed.TypedTerm Syntax.TryWithResourcesStatement -> Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm Syntax.TryWithResourcesStatement+tryWithResourcesStatementWithResourceSpecification original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "resourceSpecification"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "block"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "block")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "catches"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "catches")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "finally"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TryWithResourcesStatement"),+              Model.projectionFieldName = (Model.Name "finally")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the reference variant of hydra.java.syntax.TypeArgument+typeArgumentReference :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.TypeArgument+typeArgumentReference x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeArgument"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "reference"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.TypeArgument+typeArgumentTypeArgument :: Typed.TypedName Syntax.TypeArgument+typeArgumentTypeArgument = Typed.TypedName (Model.Name "hydra.java.syntax.TypeArgument")++-- | DSL injection for the wildcard variant of hydra.java.syntax.TypeArgument+typeArgumentWildcard :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm Syntax.TypeArgument+typeArgumentWildcard x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeArgument"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "wildcard"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the arguments variant of hydra.java.syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondArguments :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondArguments x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeArgumentsOrDiamond"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arguments"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the diamond variant of hydra.java.syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondDiamond :: Typed.TypedTerm Syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondDiamond =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeArgumentsOrDiamond"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "diamond"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondTypeArgumentsOrDiamond :: Typed.TypedName Syntax.TypeArgumentsOrDiamond+typeArgumentsOrDiamondTypeArgumentsOrDiamond = Typed.TypedName (Model.Name "hydra.java.syntax.TypeArgumentsOrDiamond")++-- | DSL injection for the classOrInterface variant of hydra.java.syntax.TypeBound+typeBoundClassOrInterface :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.TypeBound+typeBoundClassOrInterface x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeBound"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "classOrInterface"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.TypeBound+typeBoundTypeBound :: Typed.TypedName Syntax.TypeBound+typeBoundTypeBound = Typed.TypedName (Model.Name "hydra.java.syntax.TypeBound")++-- | DSL injection for the variable variant of hydra.java.syntax.TypeBound+typeBoundVariable :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeBound+typeBoundVariable x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeBound"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "variable"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL constructor for hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterface :: Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterface type_ additional =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "additional"),+          Model.fieldTerm = (Typed.unTypedTerm additional)}]}))++-- | DSL accessor for the additional field of hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceAdditional :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm [Syntax.AdditionalBound]+typeBound_ClassOrInterfaceAdditional x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "additional")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceType :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType+typeBound_ClassOrInterfaceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceTypeBound_ClassOrInterface :: Typed.TypedName Syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceTypeBound_ClassOrInterface =+    Typed.TypedName (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface")++-- | DSL updater for the additional field of hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceWithAdditional :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm [Syntax.AdditionalBound] -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceWithAdditional original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "additional"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the type field of hydra.java.syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceWithType :: Typed.TypedTerm Syntax.TypeBound_ClassOrInterface -> Typed.TypedTerm Syntax.ClassOrInterfaceType -> Typed.TypedTerm Syntax.TypeBound_ClassOrInterface+typeBound_ClassOrInterfaceWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "additional"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"),+              Model.projectionFieldName = (Model.Name "additional")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.TypeIdentifier wrapper+typeIdentifier :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.TypeIdentifier+typeIdentifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.TypeIdentifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeIdentifier+typeIdentifierTypeIdentifier :: Typed.TypedName Syntax.TypeIdentifier+typeIdentifierTypeIdentifier = Typed.TypedName (Model.Name "hydra.java.syntax.TypeIdentifier")++-- | DSL constructor for the hydra.java.syntax.TypeImportOnDemandDeclaration wrapper+typeImportOnDemandDeclaration :: Typed.TypedTerm Syntax.PackageOrTypeName -> Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration+typeImportOnDemandDeclaration x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.TypeImportOnDemandDeclaration"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeImportOnDemandDeclaration+typeImportOnDemandDeclarationTypeImportOnDemandDeclaration :: Typed.TypedName Syntax.TypeImportOnDemandDeclaration+typeImportOnDemandDeclarationTypeImportOnDemandDeclaration =+    Typed.TypedName (Model.Name "hydra.java.syntax.TypeImportOnDemandDeclaration")++-- | DSL constructor for hydra.java.syntax.TypeName+typeName :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName) -> Typed.TypedTerm Syntax.TypeName+typeName identifier qualifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm qualifier)}]}))++-- | DSL injection for the array variant of hydra.java.syntax.TypeNameArray+typeNameArrayArray :: Typed.TypedTerm Syntax.TypeNameArray -> Typed.TypedTerm Syntax.TypeNameArray+typeNameArrayArray x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeNameArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "array"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the simple variant of hydra.java.syntax.TypeNameArray+typeNameArraySimple :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeNameArray+typeNameArraySimple x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.TypeNameArray"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "simple"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.TypeNameArray+typeNameArrayTypeNameArray :: Typed.TypedName Syntax.TypeNameArray+typeNameArrayTypeNameArray = Typed.TypedName (Model.Name "hydra.java.syntax.TypeNameArray")++-- | DSL accessor for the identifier field of hydra.java.syntax.TypeName+typeNameIdentifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeIdentifier+typeNameIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeName"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the qualifier field of hydra.java.syntax.TypeName+typeNameQualifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName)+typeNameQualifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeName"),+        Model.projectionFieldName = (Model.Name "qualifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeName+typeNameTypeName :: Typed.TypedName Syntax.TypeName+typeNameTypeName = Typed.TypedName (Model.Name "hydra.java.syntax.TypeName")++-- | DSL updater for the identifier field of hydra.java.syntax.TypeName+typeNameWithIdentifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeName+typeNameWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeName"),+              Model.projectionFieldName = (Model.Name "qualifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the qualifier field of hydra.java.syntax.TypeName+typeNameWithQualifier :: Typed.TypedTerm Syntax.TypeName -> Typed.TypedTerm (Maybe Syntax.PackageOrTypeName) -> Typed.TypedTerm Syntax.TypeName+typeNameWithQualifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeName"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeName"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "qualifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for hydra.java.syntax.TypeParameter+typeParameter :: Typed.TypedTerm [Syntax.TypeParameterModifier] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm (Maybe Syntax.TypeBound) -> Typed.TypedTerm Syntax.TypeParameter+typeParameter modifiers identifier bound =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "bound"),+          Model.fieldTerm = (Typed.unTypedTerm bound)}]}))++-- | DSL accessor for the bound field of hydra.java.syntax.TypeParameter+typeParameterBound :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeBound)+typeParameterBound x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "bound")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.TypeParameter+typeParameterIdentifier :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.TypeIdentifier+typeParameterIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for the hydra.java.syntax.TypeParameterModifier wrapper+typeParameterModifier :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.TypeParameterModifier+typeParameterModifier x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.TypeParameterModifier"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeParameterModifier+typeParameterModifierTypeParameterModifier :: Typed.TypedName Syntax.TypeParameterModifier+typeParameterModifierTypeParameterModifier = Typed.TypedName (Model.Name "hydra.java.syntax.TypeParameterModifier")++-- | DSL accessor for the modifiers field of hydra.java.syntax.TypeParameter+typeParameterModifiers :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm [Syntax.TypeParameterModifier]+typeParameterModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeParameter+typeParameterTypeParameter :: Typed.TypedName Syntax.TypeParameter+typeParameterTypeParameter = Typed.TypedName (Model.Name "hydra.java.syntax.TypeParameter")++-- | DSL updater for the bound field of hydra.java.syntax.TypeParameter+typeParameterWithBound :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm (Maybe Syntax.TypeBound) -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithBound original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "bound"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.TypeParameter+typeParameterWithIdentifier :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "bound"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "bound")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.TypeParameter+typeParameterWithModifiers :: Typed.TypedTerm Syntax.TypeParameter -> Typed.TypedTerm [Syntax.TypeParameterModifier] -> Typed.TypedTerm Syntax.TypeParameter+typeParameterWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "bound"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeParameter"),+              Model.projectionFieldName = (Model.Name "bound")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for the hydra.java.syntax.TypePattern wrapper+typePattern :: Typed.TypedTerm Syntax.LocalVariableDeclaration -> Typed.TypedTerm Syntax.TypePattern+typePattern x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.TypePattern"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypePattern+typePatternTypePattern :: Typed.TypedName Syntax.TypePattern+typePatternTypePattern = Typed.TypedName (Model.Name "hydra.java.syntax.TypePattern")++-- | DSL injection for the primitive variant of hydra.java.syntax.Type+typePrimitive :: Typed.TypedTerm Syntax.PrimitiveTypeWithAnnotations -> Typed.TypedTerm Syntax.Type+typePrimitive x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "primitive"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the reference variant of hydra.java.syntax.Type+typeReference :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.Type+typeReference x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.Type"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "reference"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.Type+typeType :: Typed.TypedName Syntax.Type+typeType = Typed.TypedName (Model.Name "hydra.java.syntax.Type")++-- | DSL constructor for hydra.java.syntax.TypeVariable+typeVariable :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeVariable+typeVariable annotations identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.TypeVariable+typeVariableAnnotations :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm [Syntax.Annotation]+typeVariableAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.TypeVariable+typeVariableIdentifier :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeIdentifier+typeVariableIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.TypeVariable+typeVariableTypeVariable :: Typed.TypedName Syntax.TypeVariable+typeVariableTypeVariable = Typed.TypedName (Model.Name "hydra.java.syntax.TypeVariable")++-- | DSL updater for the annotations field of hydra.java.syntax.TypeVariable+typeVariableWithAnnotations :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.TypeVariable+typeVariableWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.TypeVariable+typeVariableWithIdentifier :: Typed.TypedTerm Syntax.TypeVariable -> Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.TypeVariable+typeVariableWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.TypeVariable"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL accessor for the body of hydra.java.syntax.AdditionalBound+unAdditionalBound :: Typed.TypedTerm Syntax.AdditionalBound -> Typed.TypedTerm Syntax.InterfaceType+unAdditionalBound x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.AdditionalBound")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.AmbiguousName+unAmbiguousName :: Typed.TypedTerm Syntax.AmbiguousName -> Typed.TypedTerm [Syntax.Identifier]+unAmbiguousName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.AmbiguousName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.AndExpression+unAndExpression :: Typed.TypedTerm Syntax.AndExpression -> Typed.TypedTerm [Syntax.EqualityExpression]+unAndExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.AndExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.AnnotationInterfaceBody+unAnnotationInterfaceBody :: Typed.TypedTerm Syntax.AnnotationInterfaceBody -> Typed.TypedTerm [Syntax.AnnotationInterfaceMemberDeclaration]+unAnnotationInterfaceBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.AnnotationInterfaceBody")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ArrayInitializer+unArrayInitializer :: Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm [[Syntax.VariableInitializer]]+unArrayInitializer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ArrayInitializer")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Block+unBlock :: Typed.TypedTerm Syntax.Block -> Typed.TypedTerm [Syntax.BlockStatement]+unBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Block")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.BreakStatement+unBreakStatement :: Typed.TypedTerm Syntax.BreakStatement -> Typed.TypedTerm (Maybe Syntax.Identifier)+unBreakStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.BreakStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.CaseConstant+unCaseConstant :: Typed.TypedTerm Syntax.CaseConstant -> Typed.TypedTerm Syntax.ConditionalExpression+unCaseConstant x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.CaseConstant")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Catches+unCatches :: Typed.TypedTerm Syntax.Catches -> Typed.TypedTerm [Syntax.CatchClause]+unCatches x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Catches")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ClassBody+unClassBody :: Typed.TypedTerm Syntax.ClassBody -> Typed.TypedTerm [Syntax.ClassBodyDeclarationWithComments]+unClassBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ClassBody")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ConditionalAndExpression+unConditionalAndExpression :: Typed.TypedTerm Syntax.ConditionalAndExpression -> Typed.TypedTerm [Syntax.InclusiveOrExpression]+unConditionalAndExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ConditionalAndExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ConditionalOrExpression+unConditionalOrExpression :: Typed.TypedTerm Syntax.ConditionalOrExpression -> Typed.TypedTerm [Syntax.ConditionalAndExpression]+unConditionalOrExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ConditionalOrExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ConstantExpression+unConstantExpression :: Typed.TypedTerm Syntax.ConstantExpression -> Typed.TypedTerm Syntax.Expression+unConstantExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ConstantExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ContinueStatement+unContinueStatement :: Typed.TypedTerm Syntax.ContinueStatement -> Typed.TypedTerm (Maybe Syntax.Identifier)+unContinueStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ContinueStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.DefaultValue+unDefaultValue :: Typed.TypedTerm Syntax.DefaultValue -> Typed.TypedTerm Syntax.ElementValue+unDefaultValue x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.DefaultValue")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Dims+unDims :: Typed.TypedTerm Syntax.Dims -> Typed.TypedTerm [[Syntax.Annotation]]+unDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Dims")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ElementValueArrayInitializer+unElementValueArrayInitializer :: Typed.TypedTerm Syntax.ElementValueArrayInitializer -> Typed.TypedTerm [Syntax.ElementValue]+unElementValueArrayInitializer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ElementValueArrayInitializer")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.EnumBody+unEnumBody :: Typed.TypedTerm Syntax.EnumBody -> Typed.TypedTerm [Syntax.EnumBody_Element]+unEnumBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.EnumBody")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.EnumConstantModifier+unEnumConstantModifier :: Typed.TypedTerm Syntax.EnumConstantModifier -> Typed.TypedTerm Syntax.Annotation+unEnumConstantModifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.EnumConstantModifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ExclusiveOrExpression+unExclusiveOrExpression :: Typed.TypedTerm Syntax.ExclusiveOrExpression -> Typed.TypedTerm [Syntax.AndExpression]+unExclusiveOrExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ExclusiveOrExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ExpressionStatement+unExpressionStatement :: Typed.TypedTerm Syntax.ExpressionStatement -> Typed.TypedTerm Syntax.StatementExpression+unExpressionStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ExpressionStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Finally+unFinally :: Typed.TypedTerm Syntax.Finally -> Typed.TypedTerm Syntax.Block+unFinally x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Finally")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.FloatingPointLiteral+unFloatingPointLiteral :: Typed.TypedTerm Syntax.FloatingPointLiteral -> Typed.TypedTerm Double+unFloatingPointLiteral x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.FloatingPointLiteral")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ForUpdate+unForUpdate :: Typed.TypedTerm Syntax.ForUpdate -> Typed.TypedTerm [Syntax.StatementExpression]+unForUpdate x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ForUpdate")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Guard+unGuard :: Typed.TypedTerm Syntax.Guard -> Typed.TypedTerm Syntax.Expression+unGuard x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Guard")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.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.java.syntax.Identifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.InclusiveOrExpression+unInclusiveOrExpression :: Typed.TypedTerm Syntax.InclusiveOrExpression -> Typed.TypedTerm [Syntax.ExclusiveOrExpression]+unInclusiveOrExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.InclusiveOrExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.InstanceInitializer+unInstanceInitializer :: Typed.TypedTerm Syntax.InstanceInitializer -> Typed.TypedTerm Syntax.Block+unInstanceInitializer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.InstanceInitializer")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.IntegerLiteral+unIntegerLiteral :: Typed.TypedTerm Syntax.IntegerLiteral -> Typed.TypedTerm Integer+unIntegerLiteral x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.IntegerLiteral")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.InterfaceBody+unInterfaceBody :: Typed.TypedTerm Syntax.InterfaceBody -> Typed.TypedTerm [Syntax.InterfaceMemberDeclarationWithComments]+unInterfaceBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.InterfaceBody")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.InterfaceType+unInterfaceType :: Typed.TypedTerm Syntax.InterfaceType -> Typed.TypedTerm Syntax.ClassType+unInterfaceType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.InterfaceType")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.LocalVariableDeclarationStatement+unLocalVariableDeclarationStatement :: Typed.TypedTerm Syntax.LocalVariableDeclarationStatement -> Typed.TypedTerm Syntax.LocalVariableDeclaration+unLocalVariableDeclarationStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.LocalVariableDeclarationStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.MarkerAnnotation+unMarkerAnnotation :: Typed.TypedTerm Syntax.MarkerAnnotation -> Typed.TypedTerm Syntax.TypeName+unMarkerAnnotation x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.MarkerAnnotation")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.MethodName+unMethodName :: Typed.TypedTerm Syntax.MethodName -> Typed.TypedTerm Syntax.Identifier+unMethodName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.MethodName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.MethodReference_Array+unMethodReference_Array :: Typed.TypedTerm Syntax.MethodReference_Array -> Typed.TypedTerm Syntax.ArrayType+unMethodReference_Array x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.MethodReference_Array")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PackageModifier+unPackageModifier :: Typed.TypedTerm Syntax.PackageModifier -> Typed.TypedTerm Syntax.Annotation+unPackageModifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PackageModifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PackageName+unPackageName :: Typed.TypedTerm Syntax.PackageName -> Typed.TypedTerm [Syntax.Identifier]+unPackageName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PackageName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PackageOrTypeName+unPackageOrTypeName :: Typed.TypedTerm Syntax.PackageOrTypeName -> Typed.TypedTerm [Syntax.Identifier]+unPackageOrTypeName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PackageOrTypeName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PostDecrementExpression+unPostDecrementExpression :: Typed.TypedTerm Syntax.PostDecrementExpression -> Typed.TypedTerm Syntax.PostfixExpression+unPostDecrementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PostDecrementExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PostIncrementExpression+unPostIncrementExpression :: Typed.TypedTerm Syntax.PostIncrementExpression -> Typed.TypedTerm Syntax.PostfixExpression+unPostIncrementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PostIncrementExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PreDecrementExpression+unPreDecrementExpression :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.UnaryExpression+unPreDecrementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PreDecrementExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.PreIncrementExpression+unPreIncrementExpression :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.UnaryExpression+unPreIncrementExpression x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.PreIncrementExpression")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.RecordBody+unRecordBody :: Typed.TypedTerm Syntax.RecordBody -> Typed.TypedTerm [Syntax.RecordBodyDeclaration]+unRecordBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.RecordBody")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.RecordComponentModifier+unRecordComponentModifier :: Typed.TypedTerm Syntax.RecordComponentModifier -> Typed.TypedTerm Syntax.Annotation+unRecordComponentModifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.RecordComponentModifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.RecordHeader+unRecordHeader :: Typed.TypedTerm Syntax.RecordHeader -> Typed.TypedTerm [Syntax.RecordComponent]+unRecordHeader x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.RecordHeader")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ResourceSpecification+unResourceSpecification :: Typed.TypedTerm Syntax.ResourceSpecification -> Typed.TypedTerm [Syntax.Resource]+unResourceSpecification x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ResourceSpecification")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.ReturnStatement+unReturnStatement :: Typed.TypedTerm Syntax.ReturnStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+unReturnStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.ReturnStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.SimpleTypeName+unSimpleTypeName :: Typed.TypedTerm Syntax.SimpleTypeName -> Typed.TypedTerm Syntax.TypeIdentifier+unSimpleTypeName x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.SimpleTypeName")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.SingleTypeImportDeclaration+unSingleTypeImportDeclaration :: Typed.TypedTerm Syntax.SingleTypeImportDeclaration -> Typed.TypedTerm Syntax.TypeName+unSingleTypeImportDeclaration x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.SingleTypeImportDeclaration")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.StaticImportOnDemandDeclaration+unStaticImportOnDemandDeclaration :: Typed.TypedTerm Syntax.StaticImportOnDemandDeclaration -> Typed.TypedTerm Syntax.TypeName+unStaticImportOnDemandDeclaration x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.StaticImportOnDemandDeclaration")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.StaticInitializer+unStaticInitializer :: Typed.TypedTerm Syntax.StaticInitializer -> Typed.TypedTerm Syntax.Block+unStaticInitializer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.StaticInitializer")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.StringLiteral+unStringLiteral :: Typed.TypedTerm Syntax.StringLiteral -> Typed.TypedTerm String+unStringLiteral x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.StringLiteral")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.TextBlock+unTextBlock :: Typed.TypedTerm Syntax.TextBlock -> Typed.TypedTerm String+unTextBlock x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.TextBlock")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.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.java.syntax.ThrowStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.Throws+unThrows :: Typed.TypedTerm Syntax.Throws -> Typed.TypedTerm [Syntax.ExceptionType]+unThrows x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.Throws")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.TypeIdentifier+unTypeIdentifier :: Typed.TypedTerm Syntax.TypeIdentifier -> Typed.TypedTerm Syntax.Identifier+unTypeIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.TypeIdentifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.TypeImportOnDemandDeclaration+unTypeImportOnDemandDeclaration :: Typed.TypedTerm Syntax.TypeImportOnDemandDeclaration -> Typed.TypedTerm Syntax.PackageOrTypeName+unTypeImportOnDemandDeclaration x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.TypeImportOnDemandDeclaration")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.TypeParameterModifier+unTypeParameterModifier :: Typed.TypedTerm Syntax.TypeParameterModifier -> Typed.TypedTerm Syntax.Annotation+unTypeParameterModifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.TypeParameterModifier")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.TypePattern+unTypePattern :: Typed.TypedTerm Syntax.TypePattern -> Typed.TypedTerm Syntax.LocalVariableDeclaration+unTypePattern x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.TypePattern")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.UnannClassType+unUnannClassType :: Typed.TypedTerm Syntax.UnannClassType -> Typed.TypedTerm Syntax.ClassType+unUnannClassType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.UnannClassType")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.UnannType+unUnannType :: Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.Type+unUnannType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.UnannType")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body of hydra.java.syntax.YieldStatement+unYieldStatement :: Typed.TypedTerm Syntax.YieldStatement -> Typed.TypedTerm Syntax.Expression+unYieldStatement x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.java.syntax.YieldStatement")),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for the hydra.java.syntax.UnannClassType wrapper+unannClassType :: Typed.TypedTerm Syntax.ClassType -> Typed.TypedTerm Syntax.UnannClassType+unannClassType x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.UnannClassType"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.UnannClassType+unannClassTypeUnannClassType :: Typed.TypedName Syntax.UnannClassType+unannClassTypeUnannClassType = Typed.TypedName (Model.Name "hydra.java.syntax.UnannClassType")++-- | DSL constructor for the hydra.java.syntax.UnannType wrapper+unannType :: Typed.TypedTerm Syntax.Type -> Typed.TypedTerm Syntax.UnannType+unannType x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.UnannType"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.UnannType+unannTypeUnannType :: Typed.TypedName Syntax.UnannType+unannTypeUnannType = Typed.TypedName (Model.Name "hydra.java.syntax.UnannType")++-- | DSL injection for the minus variant of hydra.java.syntax.UnaryExpression+unaryExpressionMinus :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionMinus x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "minus"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the cast variant of hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusCast :: Typed.TypedTerm Syntax.CastExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusCast x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "cast"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the not variant of hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusNot :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusNot x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "not"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the postfix variant of hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusPostfix :: Typed.TypedTerm Syntax.PostfixExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusPostfix x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "postfix"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the switchExpression variant of hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusSwitchExpression :: Typed.TypedTerm Syntax.SwitchExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusSwitchExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "switchExpression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the tilde variant of hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusTilde :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusTilde x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "tilde"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus :: Typed.TypedName Syntax.UnaryExpressionNotPlusMinus+unaryExpressionNotPlusMinusUnaryExpressionNotPlusMinus =+    Typed.TypedName (Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus")++-- | DSL injection for the other variant of hydra.java.syntax.UnaryExpression+unaryExpressionOther :: Typed.TypedTerm Syntax.UnaryExpressionNotPlusMinus -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionOther x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "other"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the plus variant of hydra.java.syntax.UnaryExpression+unaryExpressionPlus :: Typed.TypedTerm Syntax.UnaryExpression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionPlus x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "plus"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the preDecrement variant of hydra.java.syntax.UnaryExpression+unaryExpressionPreDecrement :: Typed.TypedTerm Syntax.PreDecrementExpression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionPreDecrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "preDecrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the preIncrement variant of hydra.java.syntax.UnaryExpression+unaryExpressionPreIncrement :: Typed.TypedTerm Syntax.PreIncrementExpression -> Typed.TypedTerm Syntax.UnaryExpression+unaryExpressionPreIncrement x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.UnaryExpression"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "preIncrement"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.UnaryExpression+unaryExpressionUnaryExpression :: Typed.TypedName Syntax.UnaryExpression+unaryExpressionUnaryExpression = Typed.TypedName (Model.Name "hydra.java.syntax.UnaryExpression")++-- | DSL constructor for hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpression :: Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpression typeArguments classOrInterface arguments body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm typeArguments)},+        Model.Field {+          Model.fieldName = (Model.Name "classOrInterface"),+          Model.fieldTerm = (Typed.unTypedTerm classOrInterface)},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm arguments)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the arguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.Expression]+unqualifiedClassInstanceCreationExpressionArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "arguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the body field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionBody :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassBody)+unqualifiedClassInstanceCreationExpressionBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the classOrInterface field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionClassOrInterface :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate+unqualifiedClassInstanceCreationExpressionClassOrInterface x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "classOrInterface")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the typeArguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionTypeArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.TypeArgument]+unqualifiedClassInstanceCreationExpressionTypeArguments x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+        Model.projectionFieldName = (Model.Name "typeArguments")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression :: Typed.TypedName Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionUnqualifiedClassInstanceCreationExpression =+    Typed.TypedName (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression")++-- | DSL updater for the arguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.Expression] -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "classOrInterface"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "classOrInterface")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "arguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the body field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithBody :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm (Maybe Syntax.ClassBody) -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "classOrInterface"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "classOrInterface")})),+            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.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the classOrInterface field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithClassOrInterface :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm Syntax.ClassOrInterfaceTypeToInstantiate -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithClassOrInterface original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "typeArguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "classOrInterface"),+          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.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the typeArguments field of hydra.java.syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithTypeArguments :: Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression -> Typed.TypedTerm [Syntax.TypeArgument] -> Typed.TypedTerm Syntax.UnqualifiedClassInstanceCreationExpression+unqualifiedClassInstanceCreationExpressionWithTypeArguments original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "typeArguments"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "classOrInterface"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "classOrInterface")})),+            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.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "arguments")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL injection for the expressionName variant of hydra.java.syntax.VariableAccess+variableAccessExpressionName :: Typed.TypedTerm Syntax.ExpressionName -> Typed.TypedTerm Syntax.VariableAccess+variableAccessExpressionName x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableAccess"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expressionName"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the fieldAccess variant of hydra.java.syntax.VariableAccess+variableAccessFieldAccess :: Typed.TypedTerm Syntax.FieldAccess -> Typed.TypedTerm Syntax.VariableAccess+variableAccessFieldAccess x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableAccess"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "fieldAccess"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.VariableAccess+variableAccessVariableAccess :: Typed.TypedName Syntax.VariableAccess+variableAccessVariableAccess = Typed.TypedName (Model.Name "hydra.java.syntax.VariableAccess")++-- | DSL constructor for hydra.java.syntax.VariableArityParameter+variableArityParameter :: Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityParameter+variableArityParameter modifiers type_ annotations identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.VariableArityParameter+variableArityParameterAnnotations :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.Annotation]+variableArityParameterAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.VariableArityParameter+variableArityParameterIdentifier :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.Identifier+variableArityParameterIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.VariableArityParameter+variableArityParameterModifiers :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.VariableModifier]+variableArityParameterModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.VariableArityParameter+variableArityParameterType :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.UnannType+variableArityParameterType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.VariableArityParameter+variableArityParameterVariableArityParameter :: Typed.TypedName Syntax.VariableArityParameter+variableArityParameterVariableArityParameter = Typed.TypedName (Model.Name "hydra.java.syntax.VariableArityParameter")++-- | DSL updater for the annotations field of hydra.java.syntax.VariableArityParameter+variableArityParameterWithAnnotations :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.VariableArityParameter+variableArityParameterWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.VariableArityParameter+variableArityParameterWithIdentifier :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityParameter+variableArityParameterWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.VariableArityParameter+variableArityParameterWithModifiers :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm [Syntax.VariableModifier] -> Typed.TypedTerm Syntax.VariableArityParameter+variableArityParameterWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.VariableArityParameter+variableArityParameterWithType :: Typed.TypedTerm Syntax.VariableArityParameter -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableArityParameter+variableArityParameterWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityParameter"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponent :: Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityRecordComponent+variableArityRecordComponent modifiers type_ annotations identifier =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Typed.unTypedTerm modifiers)},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm type_)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentAnnotations :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.Annotation]+variableArityRecordComponentAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentIdentifier :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.Identifier+variableArityRecordComponentIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the modifiers field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentModifiers :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.RecordComponentModifier]+variableArityRecordComponentModifiers x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+        Model.projectionFieldName = (Model.Name "modifiers")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the type field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentType :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.UnannType+variableArityRecordComponentType x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+        Model.projectionFieldName = (Model.Name "type")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentVariableArityRecordComponent :: Typed.TypedName Syntax.VariableArityRecordComponent+variableArityRecordComponentVariableArityRecordComponent =+    Typed.TypedName (Model.Name "hydra.java.syntax.VariableArityRecordComponent")++-- | DSL updater for the annotations field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentWithAnnotations :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.VariableArityRecordComponent+variableArityRecordComponentWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentWithIdentifier :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableArityRecordComponent+variableArityRecordComponentWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            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.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the modifiers field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentWithModifiers :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm [Syntax.RecordComponentModifier] -> Typed.TypedTerm Syntax.VariableArityRecordComponent+variableArityRecordComponentWithModifiers original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          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.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "type")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the type field of hydra.java.syntax.VariableArityRecordComponent+variableArityRecordComponentWithType :: Typed.TypedTerm Syntax.VariableArityRecordComponent -> Typed.TypedTerm Syntax.UnannType -> Typed.TypedTerm Syntax.VariableArityRecordComponent+variableArityRecordComponentWithType original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "modifiers"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "modifiers")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "type"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableArityRecordComponent"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.VariableDeclarator+variableDeclarator :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.VariableInitializer) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclarator id initializer =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm id)},+        Model.Field {+          Model.fieldName = (Model.Name "initializer"),+          Model.fieldTerm = (Typed.unTypedTerm initializer)}]}))++-- | DSL accessor for the id field of hydra.java.syntax.VariableDeclarator+variableDeclaratorId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.VariableDeclaratorId+variableDeclaratorId x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclarator"),+        Model.projectionFieldName = (Model.Name "id")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.java.syntax.VariableDeclaratorId+variableDeclaratorId2 :: Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.VariableDeclaratorId+variableDeclaratorId2 identifier dims =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm identifier)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm dims)}]}))++-- | DSL accessor for the dims field of hydra.java.syntax.VariableDeclaratorId+variableDeclaratorIdDims :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.Dims)+variableDeclaratorIdDims x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+        Model.projectionFieldName = (Model.Name "dims")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the identifier field of hydra.java.syntax.VariableDeclaratorId+variableDeclaratorIdIdentifier :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.Identifier+variableDeclaratorIdIdentifier x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+        Model.projectionFieldName = (Model.Name "identifier")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.VariableDeclaratorId+variableDeclaratorIdVariableDeclaratorId :: Typed.TypedName Syntax.VariableDeclaratorId+variableDeclaratorIdVariableDeclaratorId = Typed.TypedName (Model.Name "hydra.java.syntax.VariableDeclaratorId")++-- | DSL updater for the dims field of hydra.java.syntax.VariableDeclaratorId+variableDeclaratorIdWithDims :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm (Maybe Syntax.Dims) -> Typed.TypedTerm Syntax.VariableDeclaratorId+variableDeclaratorIdWithDims original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+              Model.projectionFieldName = (Model.Name "identifier")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the identifier field of hydra.java.syntax.VariableDeclaratorId+variableDeclaratorIdWithIdentifier :: Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.Identifier -> Typed.TypedTerm Syntax.VariableDeclaratorId+variableDeclaratorIdWithIdentifier original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "identifier"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "dims"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclaratorId"),+              Model.projectionFieldName = (Model.Name "dims")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL accessor for the initializer field of hydra.java.syntax.VariableDeclarator+variableDeclaratorInitializer :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.VariableInitializer)+variableDeclaratorInitializer x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclarator"),+        Model.projectionFieldName = (Model.Name "initializer")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.VariableDeclarator+variableDeclaratorVariableDeclarator :: Typed.TypedName Syntax.VariableDeclarator+variableDeclaratorVariableDeclarator = Typed.TypedName (Model.Name "hydra.java.syntax.VariableDeclarator")++-- | DSL updater for the id field of hydra.java.syntax.VariableDeclarator+variableDeclaratorWithId :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm Syntax.VariableDeclaratorId -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithId original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.VariableDeclarator"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "id"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "initializer"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.VariableDeclarator"),+              Model.projectionFieldName = (Model.Name "initializer")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the initializer field of hydra.java.syntax.VariableDeclarator+variableDeclaratorWithInitializer :: Typed.TypedTerm Syntax.VariableDeclarator -> Typed.TypedTerm (Maybe Syntax.VariableInitializer) -> Typed.TypedTerm Syntax.VariableDeclarator+variableDeclaratorWithInitializer original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.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.java.syntax.VariableDeclarator"),+              Model.projectionFieldName = (Model.Name "id")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "initializer"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL injection for the arrayInitializer variant of hydra.java.syntax.VariableInitializer+variableInitializerArrayInitializer :: Typed.TypedTerm Syntax.ArrayInitializer -> Typed.TypedTerm Syntax.VariableInitializer+variableInitializerArrayInitializer x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "arrayInitializer"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the expression variant of hydra.java.syntax.VariableInitializer+variableInitializerExpression :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.VariableInitializer+variableInitializerExpression x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableInitializer"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "expression"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.VariableInitializer+variableInitializerVariableInitializer :: Typed.TypedName Syntax.VariableInitializer+variableInitializerVariableInitializer = Typed.TypedName (Model.Name "hydra.java.syntax.VariableInitializer")++-- | DSL injection for the annotation variant of hydra.java.syntax.VariableModifier+variableModifierAnnotation :: Typed.TypedTerm Syntax.Annotation -> Typed.TypedTerm Syntax.VariableModifier+variableModifierAnnotation x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "annotation"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the final variant of hydra.java.syntax.VariableModifier+variableModifierFinal :: Typed.TypedTerm Syntax.VariableModifier+variableModifierFinal =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.VariableModifier"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "final"),+        Model.fieldTerm = Model.TermUnit}}))++-- | DSL name token for hydra.java.syntax.VariableModifier+variableModifierVariableModifier :: Typed.TypedName Syntax.VariableModifier+variableModifierVariableModifier = Typed.TypedName (Model.Name "hydra.java.syntax.VariableModifier")++-- | DSL constructor for hydra.java.syntax.WhileStatement+whileStatement :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.Statement -> Typed.TypedTerm Syntax.WhileStatement+whileStatement cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.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.java.syntax.WhileStatement"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.WhileStatement+whileStatementCond :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Expression)+whileStatementCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatement"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL constructor for hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIf :: Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.WhileStatementNoShortIf+whileStatementNoShortIf cond body =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm cond)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm body)}]}))++-- | DSL accessor for the body field of hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIfBody :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf+whileStatementNoShortIfBody x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "body")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL accessor for the cond field of hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIfCond :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression)+whileStatementNoShortIfCond x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+        Model.projectionFieldName = (Model.Name "cond")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIfWhileStatementNoShortIf :: Typed.TypedName Syntax.WhileStatementNoShortIf+whileStatementNoShortIfWhileStatementNoShortIf = Typed.TypedName (Model.Name "hydra.java.syntax.WhileStatementNoShortIf")++-- | DSL updater for the body field of hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIfWithBody :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm Syntax.StatementNoShortIf -> Typed.TypedTerm Syntax.WhileStatementNoShortIf+whileStatementNoShortIfWithBody original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.WhileStatementNoShortIf+whileStatementNoShortIfWithCond :: Typed.TypedTerm Syntax.WhileStatementNoShortIf -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.WhileStatementNoShortIf+whileStatementNoShortIfWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatementNoShortIf"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL name token for hydra.java.syntax.WhileStatement+whileStatementWhileStatement :: Typed.TypedName Syntax.WhileStatement+whileStatementWhileStatement = Typed.TypedName (Model.Name "hydra.java.syntax.WhileStatement")++-- | DSL updater for the body field of hydra.java.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.java.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatement"),+              Model.projectionFieldName = (Model.Name "cond")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL updater for the cond field of hydra.java.syntax.WhileStatement+whileStatementWithCond :: Typed.TypedTerm Syntax.WhileStatement -> Typed.TypedTerm (Maybe Syntax.Expression) -> Typed.TypedTerm Syntax.WhileStatement+whileStatementWithCond original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.WhileStatement"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "cond"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "body"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.WhileStatement"),+              Model.projectionFieldName = (Model.Name "body")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL constructor for hydra.java.syntax.Wildcard+wildcard :: Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm (Maybe Syntax.WildcardBounds) -> Typed.TypedTerm Syntax.Wildcard+wildcard annotations wildcard =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm annotations)},+        Model.Field {+          Model.fieldName = (Model.Name "wildcard"),+          Model.fieldTerm = (Typed.unTypedTerm wildcard)}]}))++-- | DSL accessor for the annotations field of hydra.java.syntax.Wildcard+wildcardAnnotations :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm [Syntax.Annotation]+wildcardAnnotations x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+        Model.projectionFieldName = (Model.Name "annotations")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL injection for the extends variant of hydra.java.syntax.WildcardBounds+wildcardBoundsExtends :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.WildcardBounds+wildcardBoundsExtends x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.WildcardBounds"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "extends"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL injection for the super variant of hydra.java.syntax.WildcardBounds+wildcardBoundsSuper :: Typed.TypedTerm Syntax.ReferenceType -> Typed.TypedTerm Syntax.WildcardBounds+wildcardBoundsSuper x =+    Typed.TypedTerm (Model.TermInject (Model.Injection {+      Model.injectionTypeName = (Model.Name "hydra.java.syntax.WildcardBounds"),+      Model.injectionField = Model.Field {+        Model.fieldName = (Model.Name "super"),+        Model.fieldTerm = (Typed.unTypedTerm x)}}))++-- | DSL name token for hydra.java.syntax.WildcardBounds+wildcardBoundsWildcardBounds :: Typed.TypedName Syntax.WildcardBounds+wildcardBoundsWildcardBounds = Typed.TypedName (Model.Name "hydra.java.syntax.WildcardBounds")++-- | DSL name token for hydra.java.syntax.Wildcard+wildcardWildcard :: Typed.TypedName Syntax.Wildcard+wildcardWildcard = Typed.TypedName (Model.Name "hydra.java.syntax.Wildcard")++-- | DSL accessor for the wildcard field of hydra.java.syntax.Wildcard+wildcardWildcard2 :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm (Maybe Syntax.WildcardBounds)+wildcardWildcard2 x =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermProject (Model.Projection {+        Model.projectionTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+        Model.projectionFieldName = (Model.Name "wildcard")})),+      Model.applicationArgument = (Typed.unTypedTerm x)}))++-- | DSL updater for the annotations field of hydra.java.syntax.Wildcard+wildcardWithAnnotations :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm [Syntax.Annotation] -> Typed.TypedTerm Syntax.Wildcard+wildcardWithAnnotations original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)},+        Model.Field {+          Model.fieldName = (Model.Name "wildcard"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+              Model.projectionFieldName = (Model.Name "wildcard")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))++-- | DSL updater for the wildcard field of hydra.java.syntax.Wildcard+wildcardWithWildcard :: Typed.TypedTerm Syntax.Wildcard -> Typed.TypedTerm (Maybe Syntax.WildcardBounds) -> Typed.TypedTerm Syntax.Wildcard+wildcardWithWildcard original newVal =+    Typed.TypedTerm (Model.TermRecord (Model.Record {+      Model.recordTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+      Model.recordFields = [+        Model.Field {+          Model.fieldName = (Model.Name "annotations"),+          Model.fieldTerm = (Model.TermApplication (Model.Application {+            Model.applicationFunction = (Model.TermProject (Model.Projection {+              Model.projectionTypeName = (Model.Name "hydra.java.syntax.Wildcard"),+              Model.projectionFieldName = (Model.Name "annotations")})),+            Model.applicationArgument = (Typed.unTypedTerm original)}))},+        Model.Field {+          Model.fieldName = (Model.Name "wildcard"),+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))++-- | DSL constructor for the hydra.java.syntax.YieldStatement wrapper+yieldStatement :: Typed.TypedTerm Syntax.Expression -> Typed.TypedTerm Syntax.YieldStatement+yieldStatement x =+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {+      Model.wrappedTermTypeName = (Model.Name "hydra.java.syntax.YieldStatement"),+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))++-- | DSL name token for hydra.java.syntax.YieldStatement+yieldStatementYieldStatement :: Typed.TypedName Syntax.YieldStatement+yieldStatementYieldStatement = Typed.TypedName (Model.Name "hydra.java.syntax.YieldStatement")
src/main/haskell/Hydra/Java/Environment.hs view
@@ -4,11 +4,11 @@  module Hydra.Java.Environment where -import qualified Hydra.Core as Core-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Typing as Typing import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Typing as Typing import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -29,17 +29,17 @@   JavaSymbolClassLocalVariable   deriving (Eq, Ord, Read, Show) -_JavaSymbolClass = Core.Name "hydra.java.environment.JavaSymbolClass"+_JavaSymbolClass = Model.Name "hydra.java.environment.JavaSymbolClass" -_JavaSymbolClass_constant = Core.Name "constant"+_JavaSymbolClass_constant = Model.Name "constant" -_JavaSymbolClass_nullaryFunction = Core.Name "nullaryFunction"+_JavaSymbolClass_nullaryFunction = Model.Name "nullaryFunction" -_JavaSymbolClass_hoistedLambda = Core.Name "hoistedLambda"+_JavaSymbolClass_hoistedLambda = Model.Name "hoistedLambda" -_JavaSymbolClass_unaryFunction = Core.Name "unaryFunction"+_JavaSymbolClass_unaryFunction = Model.Name "unaryFunction" -_JavaSymbolClass_localVariable = Core.Name "localVariable"+_JavaSymbolClass_localVariable = Model.Name "localVariable"  -- | Feature flags for the target Java version data JavaFeatures =@@ -48,9 +48,9 @@     javaFeaturesSupportsDiamondOperator :: Bool}   deriving (Eq, Ord, Read, Show) -_JavaFeatures = Core.Name "hydra.java.environment.JavaFeatures"+_JavaFeatures = Model.Name "hydra.java.environment.JavaFeatures" -_JavaFeatures_supportsDiamondOperator = Core.Name "supportsDiamondOperator"+_JavaFeatures_supportsDiamondOperator = Model.Name "supportsDiamondOperator"  -- | Aliases and context for Java code generation data Aliases =@@ -60,56 +60,56 @@     -- | Maps module names to Java package names     aliasesPackages :: (M.Map Packaging.ModuleName Syntax.PackageName),     -- | Variables bound in pattern matching branches-    aliasesBranchVars :: (S.Set Core.Name),+    aliasesBranchVars :: (S.Set Model.Name),     -- | Variables that are self-recursive-    aliasesRecursiveVars :: (S.Set Core.Name),+    aliasesRecursiveVars :: (S.Set Model.Name),     -- | Type parameters that are in scope (from method-level type parameters)-    aliasesInScopeTypeParams :: (S.Set Core.Name),+    aliasesInScopeTypeParams :: (S.Set Model.Name),     -- | Local variables that have polymorphic types (declared with raw types)-    aliasesPolymorphicLocals :: (S.Set Core.Name),+    aliasesPolymorphicLocals :: (S.Set Model.Name),     -- | All in-scope Java variable names (for avoiding lambda parameter shadowing)-    aliasesInScopeJavaVars :: (S.Set Core.Name),+    aliasesInScopeJavaVars :: (S.Set Model.Name),     -- | Variable renames for avoiding shadowing (maps Hydra name to Java name)-    aliasesVarRenames :: (M.Map Core.Name Core.Name),+    aliasesVarRenames :: (M.Map Model.Name Model.Name),     -- | Lambda-bound variables (including hoisted captures with qualified names)-    aliasesLambdaVars :: (S.Set Core.Name),+    aliasesLambdaVars :: (S.Set Model.Name),     -- | Type variable substitution: maps fresh inference variable names to canonical scheme variable names-    aliasesTypeVarSubst :: (M.Map Core.Name Core.Name),+    aliasesTypeVarSubst :: (M.Map Model.Name Model.Name),     -- | Type variables that actually appear in the method's formal parameter types-    aliasesTrustedTypeVars :: (S.Set Core.Name),+    aliasesTrustedTypeVars :: (S.Set Model.Name),     -- | The enclosing method's codomain (return type), used for casting pair expressions-    aliasesMethodCodomain :: (Maybe Core.Type),+    aliasesMethodCodomain :: (Maybe Model.Type),     -- | Variables that have been thunked (wrapped in Supplier) for lazy evaluation-    aliasesThunkedVars :: (S.Set Core.Name)}+    aliasesThunkedVars :: (S.Set Model.Name)}   deriving (Eq, Ord, Read, Show) -_Aliases = Core.Name "hydra.java.environment.Aliases"+_Aliases = Model.Name "hydra.java.environment.Aliases" -_Aliases_currentNamespace = Core.Name "currentNamespace"+_Aliases_currentNamespace = Model.Name "currentNamespace" -_Aliases_packages = Core.Name "packages"+_Aliases_packages = Model.Name "packages" -_Aliases_branchVars = Core.Name "branchVars"+_Aliases_branchVars = Model.Name "branchVars" -_Aliases_recursiveVars = Core.Name "recursiveVars"+_Aliases_recursiveVars = Model.Name "recursiveVars" -_Aliases_inScopeTypeParams = Core.Name "inScopeTypeParams"+_Aliases_inScopeTypeParams = Model.Name "inScopeTypeParams" -_Aliases_polymorphicLocals = Core.Name "polymorphicLocals"+_Aliases_polymorphicLocals = Model.Name "polymorphicLocals" -_Aliases_inScopeJavaVars = Core.Name "inScopeJavaVars"+_Aliases_inScopeJavaVars = Model.Name "inScopeJavaVars" -_Aliases_varRenames = Core.Name "varRenames"+_Aliases_varRenames = Model.Name "varRenames" -_Aliases_lambdaVars = Core.Name "lambdaVars"+_Aliases_lambdaVars = Model.Name "lambdaVars" -_Aliases_typeVarSubst = Core.Name "typeVarSubst"+_Aliases_typeVarSubst = Model.Name "typeVarSubst" -_Aliases_trustedTypeVars = Core.Name "trustedTypeVars"+_Aliases_trustedTypeVars = Model.Name "trustedTypeVars" -_Aliases_methodCodomain = Core.Name "methodCodomain"+_Aliases_methodCodomain = Model.Name "methodCodomain" -_Aliases_thunkedVars = Core.Name "thunkedVars"+_Aliases_thunkedVars = Model.Name "thunkedVars"  -- | Environment for Java code generation data JavaEnvironment =@@ -119,8 +119,8 @@     -- | Graph context for type inference     javaEnvironmentGraph :: Graph.Graph} -_JavaEnvironment = Core.Name "hydra.java.environment.JavaEnvironment"+_JavaEnvironment = Model.Name "hydra.java.environment.JavaEnvironment" -_JavaEnvironment_aliases = Core.Name "aliases"+_JavaEnvironment_aliases = Model.Name "aliases" -_JavaEnvironment_graph = Core.Name "graph"+_JavaEnvironment_graph = Model.Name "graph"
+ src/main/haskell/Hydra/Java/Gradle.hs view
@@ -0,0 +1,54 @@+-- Note: this is an automatically generated file. Do not edit.++-- | Build configuration for Gradle-built distribution packages.++module Hydra.Java.Gradle where++import qualified Hydra.Core.File as File+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | Configuration for the Gradle antlr plugin's grammar generation (generateGrammarSource).+data AntlrConfig =+  AntlrConfig {+    -- | Arguments passed to the ANTLR tool, e.g. ["-visitor"] or ["-visitor", "-listener"]. Faithful to ANTLR's command-line interface; covers all ANTLR flags without enumerating them.+    antlrConfigArguments :: [String],+    -- | Directory into which ANTLR emits generated lexer/parser sources, relative to the package root (e.g. "build/generated-src/antlr/main"). The host also folds this into the main source set.+    antlrConfigOutputDirectory :: File.FilePath}+  deriving (Eq, Ord, Read, Show)++_AntlrConfig = Model.Name "hydra.java.gradle.AntlrConfig"++_AntlrConfig_arguments = Model.Name "arguments"++_AntlrConfig_outputDirectory = Model.Name "outputDirectory"++-- | The build configuration for a single Gradle-built distribution package, beyond its generated sources.+data GradleBuildConfiguration =+  GradleBuildConfiguration {+    -- | Third-party (non-project) dependencies required by the package. Inter-package dependencies within the project are derived separately and are not listed here. Each dependency's scope (api/runtime/test/tool) is significant; its name carries the Maven group and artifact separated by a colon.+    gradleBuildConfigurationDependencies :: [Packaging.PackageDependency],+    -- | Source paths or patterns to exclude from compilation, relative to the package root.+    gradleBuildConfigurationExcludes :: [String],+    -- | Additional source directories to fold into the package's main source set, beyond the generated and overlaid sources (e.g. a directory of build-tool-generated sources).+    gradleBuildConfigurationExtraSourceDirs :: [File.FilePath],+    -- | Gradle plugin identifiers to apply to the build, e.g. "antlr". Applied in the given order.+    gradleBuildConfigurationPlugins :: [String],+    -- | ANTLR grammar-generation configuration, present when the package uses the antlr plugin. When given, the host emits the generateGrammarSource configuration and the compileJava-depends-on-generateGrammarSource ordering. Modeled as structured vocabulary rather than a raw Groovy fragment.+    gradleBuildConfigurationAntlr :: (Maybe AntlrConfig)}+  deriving (Eq, Ord, Read, Show)++_GradleBuildConfiguration = Model.Name "hydra.java.gradle.GradleBuildConfiguration"++_GradleBuildConfiguration_dependencies = Model.Name "dependencies"++_GradleBuildConfiguration_excludes = Model.Name "excludes"++_GradleBuildConfiguration_extraSourceDirs = Model.Name "extraSourceDirs"++_GradleBuildConfiguration_plugins = Model.Name "plugins"++_GradleBuildConfiguration_antlr = Model.Name "antlr"
src/main/haskell/Hydra/Java/Language.hs view
@@ -4,33 +4,33 @@  module Hydra.Java.Language where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.File as File-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Lexical as Lexical-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.File as File+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Lexical as Lexical+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -73,16 +73,16 @@           Variants.LiteralVariantString]     floatTypes =         Sets.fromList [-          Core.FloatTypeFloat32,-          Core.FloatTypeFloat64]+          Model.FloatTypeFloat32,+          Model.FloatTypeFloat64]     integerTypes =         Sets.fromList [-          Core.IntegerTypeBigint,-          Core.IntegerTypeInt8,-          Core.IntegerTypeInt16,-          Core.IntegerTypeInt32,-          Core.IntegerTypeInt64,-          Core.IntegerTypeUint16]+          Model.IntegerTypeBigint,+          Model.IntegerTypeInt8,+          Model.IntegerTypeInt16,+          Model.IntegerTypeInt32,+          Model.IntegerTypeInt64,+          Model.IntegerTypeUint16]     termVariants =         Sets.fromList [           Variants.TermVariantApplication,@@ -140,8 +140,11 @@       keywords,       literals])   where-    specialNames = [-      "Elements"]+    specialNames =+        [+          "Elements",+          "PartialVisitor",+          "Visitor"]     classNames =         [           "AbstractMethodError",
src/main/haskell/Hydra/Java/Names.hs view
@@ -4,31 +4,31 @@  module Hydra.Java.Names where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -51,7 +51,7 @@ hashCodeMethodName :: String hashCodeMethodName = "hashCode" --- | The hydra.core package name+-- | The hydra.core.model package name hydraCorePackageName :: Maybe Syntax.PackageName hydraCorePackageName =     Just (javaPackageName [@@ -62,11 +62,12 @@ hydraOrdinalMethodName :: String hydraOrdinalMethodName = "hydraOrdinal" --- | The hydra.overlay.java.util package name+-- | The hydra.core.overlay.java.util package name hydraUtilPackageName :: Maybe Syntax.PackageName hydraUtilPackageName =     Just (javaPackageName [       "hydra",+      "core",       "overlay",       "java",       "util"])
src/main/haskell/Hydra/Java/Serde.hs view
@@ -4,43 +4,43 @@  module Hydra.Java.Serde where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Print.Docs as Docs+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Json.Model as Model import qualified Hydra.Jvm.Serde as Serde-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Print.Docs as Docs-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -650,7 +650,7 @@ interfaceTypeToExpr :: Syntax.InterfaceType -> Ast.Expr interfaceTypeToExpr it = classTypeToExpr (Syntax.unInterfaceType it) --- | Render a hydra.packaging.EntityReference as Javadoc link syntax+-- | Render a hydra.core.packaging.EntityReference as Javadoc link syntax javaDocEntityRef :: Packaging.EntityReference -> String javaDocEntityRef ref =     case ref of
src/main/haskell/Hydra/Java/Syntax.hs view
@@ -6,3575 +6,3575 @@  module Hydra.Java.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--newtype Identifier =-  Identifier {-    unIdentifier :: String}-  deriving (Eq, Ord, Read, Show)--_Identifier = Core.Name "hydra.java.syntax.Identifier"--newtype TypeIdentifier =-  TypeIdentifier {-    unTypeIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_TypeIdentifier = Core.Name "hydra.java.syntax.TypeIdentifier"--data Literal =-  LiteralNull |-  LiteralInteger IntegerLiteral |-  LiteralFloatingPoint FloatingPointLiteral |-  LiteralBoolean Bool |-  LiteralCharacter Int |-  LiteralString StringLiteral |-  LiteralTextBlock TextBlock-  deriving (Eq, Ord, Read, Show)--_Literal = Core.Name "hydra.java.syntax.Literal"--_Literal_null = Core.Name "null"--_Literal_integer = Core.Name "integer"--_Literal_floatingPoint = Core.Name "floatingPoint"--_Literal_boolean = Core.Name "boolean"--_Literal_character = Core.Name "character"--_Literal_string = Core.Name "string"--_Literal_textBlock = Core.Name "textBlock"---- | Note: this is an approximation which ignores encoding-newtype IntegerLiteral =-  IntegerLiteral {-    unIntegerLiteral :: Integer}-  deriving (Eq, Ord, Read, Show)--_IntegerLiteral = Core.Name "hydra.java.syntax.IntegerLiteral"---- | Note: this is an approximation which ignores encoding-newtype FloatingPointLiteral =-  FloatingPointLiteral {-    unFloatingPointLiteral :: Double}-  deriving (Eq, Ord, Read, Show)--_FloatingPointLiteral = Core.Name "hydra.java.syntax.FloatingPointLiteral"---- | Note: this is an approximation which ignores encoding-newtype StringLiteral =-  StringLiteral {-    unStringLiteral :: String}-  deriving (Eq, Ord, Read, Show)--_StringLiteral = Core.Name "hydra.java.syntax.StringLiteral"---- | Note: this is an approximation which ignores encoding and incidental whitespace stripping-newtype TextBlock =-  TextBlock {-    unTextBlock :: String}-  deriving (Eq, Ord, Read, Show)--_TextBlock = Core.Name "hydra.java.syntax.TextBlock"--data Type =-  TypePrimitive PrimitiveTypeWithAnnotations |-  TypeReference ReferenceType-  deriving (Eq, Ord, Read, Show)--_Type = Core.Name "hydra.java.syntax.Type"--_Type_primitive = Core.Name "primitive"--_Type_reference = Core.Name "reference"--data PrimitiveTypeWithAnnotations =-  PrimitiveTypeWithAnnotations {-    primitiveTypeWithAnnotationsType :: PrimitiveType,-    primitiveTypeWithAnnotationsAnnotations :: [Annotation]}-  deriving (Eq, Ord, Read, Show)--_PrimitiveTypeWithAnnotations = Core.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"--_PrimitiveTypeWithAnnotations_type = Core.Name "type"--_PrimitiveTypeWithAnnotations_annotations = Core.Name "annotations"--data PrimitiveType =-  PrimitiveTypeNumeric NumericType |-  PrimitiveTypeBoolean-  deriving (Eq, Ord, Read, Show)--_PrimitiveType = Core.Name "hydra.java.syntax.PrimitiveType"--_PrimitiveType_numeric = Core.Name "numeric"--_PrimitiveType_boolean = Core.Name "boolean"--data NumericType =-  NumericTypeIntegral IntegralType |-  NumericTypeFloatingPoint FloatingPointType-  deriving (Eq, Ord, Read, Show)--_NumericType = Core.Name "hydra.java.syntax.NumericType"--_NumericType_integral = Core.Name "integral"--_NumericType_floatingPoint = Core.Name "floatingPoint"--data IntegralType =-  IntegralTypeByte |-  IntegralTypeShort |-  IntegralTypeInt |-  IntegralTypeLong |-  IntegralTypeChar-  deriving (Eq, Ord, Read, Show)--_IntegralType = Core.Name "hydra.java.syntax.IntegralType"--_IntegralType_byte = Core.Name "byte"--_IntegralType_short = Core.Name "short"--_IntegralType_int = Core.Name "int"--_IntegralType_long = Core.Name "long"--_IntegralType_char = Core.Name "char"--data FloatingPointType =-  FloatingPointTypeFloat |-  FloatingPointTypeDouble-  deriving (Eq, Ord, Read, Show)--_FloatingPointType = Core.Name "hydra.java.syntax.FloatingPointType"--_FloatingPointType_float = Core.Name "float"--_FloatingPointType_double = Core.Name "double"--data ReferenceType =-  ReferenceTypeClassOrInterface ClassOrInterfaceType |-  ReferenceTypeVariable TypeVariable |-  ReferenceTypeArray ArrayType-  deriving (Eq, Ord, Read, Show)--_ReferenceType = Core.Name "hydra.java.syntax.ReferenceType"--_ReferenceType_classOrInterface = Core.Name "classOrInterface"--_ReferenceType_variable = Core.Name "variable"--_ReferenceType_array = Core.Name "array"--data ClassOrInterfaceType =-  ClassOrInterfaceTypeClass ClassType |-  ClassOrInterfaceTypeInterface InterfaceType-  deriving (Eq, Ord, Read, Show)--_ClassOrInterfaceType = Core.Name "hydra.java.syntax.ClassOrInterfaceType"--_ClassOrInterfaceType_class = Core.Name "class"--_ClassOrInterfaceType_interface = Core.Name "interface"--data ClassType =-  ClassType {-    classTypeAnnotations :: [Annotation],-    classTypeQualifier :: ClassTypeQualifier,-    classTypeIdentifier :: TypeIdentifier,-    classTypeArguments :: [TypeArgument]}-  deriving (Eq, Ord, Read, Show)--_ClassType = Core.Name "hydra.java.syntax.ClassType"--_ClassType_annotations = Core.Name "annotations"--_ClassType_qualifier = Core.Name "qualifier"--_ClassType_identifier = Core.Name "identifier"--_ClassType_arguments = Core.Name "arguments"--data ClassTypeQualifier =-  ClassTypeQualifierNone |-  ClassTypeQualifierPackage PackageName |-  ClassTypeQualifierParent ClassOrInterfaceType-  deriving (Eq, Ord, Read, Show)--_ClassTypeQualifier = Core.Name "hydra.java.syntax.ClassTypeQualifier"--_ClassTypeQualifier_none = Core.Name "none"--_ClassTypeQualifier_package = Core.Name "package"--_ClassTypeQualifier_parent = Core.Name "parent"--newtype InterfaceType =-  InterfaceType {-    unInterfaceType :: ClassType}-  deriving (Eq, Ord, Read, Show)--_InterfaceType = Core.Name "hydra.java.syntax.InterfaceType"--data TypeVariable =-  TypeVariable {-    typeVariableAnnotations :: [Annotation],-    typeVariableIdentifier :: TypeIdentifier}-  deriving (Eq, Ord, Read, Show)--_TypeVariable = Core.Name "hydra.java.syntax.TypeVariable"--_TypeVariable_annotations = Core.Name "annotations"--_TypeVariable_identifier = Core.Name "identifier"--data ArrayType =-  ArrayType {-    arrayTypeDims :: Dims,-    arrayTypeVariant :: ArrayType_Variant}-  deriving (Eq, Ord, Read, Show)--_ArrayType = Core.Name "hydra.java.syntax.ArrayType"--_ArrayType_dims = Core.Name "dims"--_ArrayType_variant = Core.Name "variant"--data ArrayType_Variant =-  ArrayType_VariantPrimitive PrimitiveTypeWithAnnotations |-  ArrayType_VariantClassOrInterface ClassOrInterfaceType |-  ArrayType_VariantVariable TypeVariable-  deriving (Eq, Ord, Read, Show)--_ArrayType_Variant = Core.Name "hydra.java.syntax.ArrayType_Variant"--_ArrayType_Variant_primitive = Core.Name "primitive"--_ArrayType_Variant_classOrInterface = Core.Name "classOrInterface"--_ArrayType_Variant_variable = Core.Name "variable"--newtype Dims =-  Dims {-    unDims :: [[Annotation]]}-  deriving (Eq, Ord, Read, Show)--_Dims = Core.Name "hydra.java.syntax.Dims"--data TypeParameter =-  TypeParameter {-    typeParameterModifiers :: [TypeParameterModifier],-    typeParameterIdentifier :: TypeIdentifier,-    typeParameterBound :: (Maybe TypeBound)}-  deriving (Eq, Ord, Read, Show)--_TypeParameter = Core.Name "hydra.java.syntax.TypeParameter"--_TypeParameter_modifiers = Core.Name "modifiers"--_TypeParameter_identifier = Core.Name "identifier"--_TypeParameter_bound = Core.Name "bound"--newtype TypeParameterModifier =-  TypeParameterModifier {-    unTypeParameterModifier :: Annotation}-  deriving (Eq, Ord, Read, Show)--_TypeParameterModifier = Core.Name "hydra.java.syntax.TypeParameterModifier"--data TypeBound =-  TypeBoundVariable TypeVariable |-  TypeBoundClassOrInterface TypeBound_ClassOrInterface-  deriving (Eq, Ord, Read, Show)--_TypeBound = Core.Name "hydra.java.syntax.TypeBound"--_TypeBound_variable = Core.Name "variable"--_TypeBound_classOrInterface = Core.Name "classOrInterface"--data TypeBound_ClassOrInterface =-  TypeBound_ClassOrInterface {-    typeBound_ClassOrInterfaceType :: ClassOrInterfaceType,-    typeBound_ClassOrInterfaceAdditional :: [AdditionalBound]}-  deriving (Eq, Ord, Read, Show)--_TypeBound_ClassOrInterface = Core.Name "hydra.java.syntax.TypeBound_ClassOrInterface"--_TypeBound_ClassOrInterface_type = Core.Name "type"--_TypeBound_ClassOrInterface_additional = Core.Name "additional"--newtype AdditionalBound =-  AdditionalBound {-    unAdditionalBound :: InterfaceType}-  deriving (Eq, Ord, Read, Show)--_AdditionalBound = Core.Name "hydra.java.syntax.AdditionalBound"--data TypeArgument =-  TypeArgumentReference ReferenceType |-  TypeArgumentWildcard Wildcard-  deriving (Eq, Ord, Read, Show)--_TypeArgument = Core.Name "hydra.java.syntax.TypeArgument"--_TypeArgument_reference = Core.Name "reference"--_TypeArgument_wildcard = Core.Name "wildcard"--data Wildcard =-  Wildcard {-    wildcardAnnotations :: [Annotation],-    wildcardWildcard :: (Maybe WildcardBounds)}-  deriving (Eq, Ord, Read, Show)--_Wildcard = Core.Name "hydra.java.syntax.Wildcard"--_Wildcard_annotations = Core.Name "annotations"--_Wildcard_wildcard = Core.Name "wildcard"--data WildcardBounds =-  WildcardBoundsExtends ReferenceType |-  WildcardBoundsSuper ReferenceType-  deriving (Eq, Ord, Read, Show)--_WildcardBounds = Core.Name "hydra.java.syntax.WildcardBounds"--_WildcardBounds_extends = Core.Name "extends"--_WildcardBounds_super = Core.Name "super"--data ModuleName =-  ModuleName {-    moduleNameIdentifier :: Identifier,-    moduleNameName :: (Maybe ModuleName)}-  deriving (Eq, Ord, Read, Show)--_ModuleName = Core.Name "hydra.java.syntax.ModuleName"--_ModuleName_identifier = Core.Name "identifier"--_ModuleName_name = Core.Name "name"--newtype PackageName =-  PackageName {-    unPackageName :: [Identifier]}-  deriving (Eq, Ord, Read, Show)--_PackageName = Core.Name "hydra.java.syntax.PackageName"--data TypeName =-  TypeName {-    typeNameIdentifier :: TypeIdentifier,-    typeNameQualifier :: (Maybe PackageOrTypeName)}-  deriving (Eq, Ord, Read, Show)--_TypeName = Core.Name "hydra.java.syntax.TypeName"--_TypeName_identifier = Core.Name "identifier"--_TypeName_qualifier = Core.Name "qualifier"--data ExpressionName =-  ExpressionName {-    expressionNameQualifier :: (Maybe AmbiguousName),-    expressionNameIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_ExpressionName = Core.Name "hydra.java.syntax.ExpressionName"--_ExpressionName_qualifier = Core.Name "qualifier"--_ExpressionName_identifier = Core.Name "identifier"--newtype MethodName =-  MethodName {-    unMethodName :: Identifier}-  deriving (Eq, Ord, Read, Show)--_MethodName = Core.Name "hydra.java.syntax.MethodName"--newtype PackageOrTypeName =-  PackageOrTypeName {-    unPackageOrTypeName :: [Identifier]}-  deriving (Eq, Ord, Read, Show)--_PackageOrTypeName = Core.Name "hydra.java.syntax.PackageOrTypeName"--newtype AmbiguousName =-  AmbiguousName {-    unAmbiguousName :: [Identifier]}-  deriving (Eq, Ord, Read, Show)--_AmbiguousName = Core.Name "hydra.java.syntax.AmbiguousName"--data CompilationUnit =-  CompilationUnitOrdinary OrdinaryCompilationUnit |-  CompilationUnitModular ModularCompilationUnit-  deriving (Eq, Ord, Read, Show)--_CompilationUnit = Core.Name "hydra.java.syntax.CompilationUnit"--_CompilationUnit_ordinary = Core.Name "ordinary"--_CompilationUnit_modular = Core.Name "modular"--data OrdinaryCompilationUnit =-  OrdinaryCompilationUnit {-    ordinaryCompilationUnitPackage :: (Maybe PackageDeclaration),-    ordinaryCompilationUnitImports :: [ImportDeclaration],-    ordinaryCompilationUnitTypes :: [TopLevelClassOrInterfaceDeclarationWithComments]}-  deriving (Eq, Ord, Read, Show)--_OrdinaryCompilationUnit = Core.Name "hydra.java.syntax.OrdinaryCompilationUnit"--_OrdinaryCompilationUnit_package = Core.Name "package"--_OrdinaryCompilationUnit_imports = Core.Name "imports"--_OrdinaryCompilationUnit_types = Core.Name "types"--data ModularCompilationUnit =-  ModularCompilationUnit {-    modularCompilationUnitImports :: [ImportDeclaration],-    modularCompilationUnitModule :: ModuleDeclaration}-  deriving (Eq, Ord, Read, Show)--_ModularCompilationUnit = Core.Name "hydra.java.syntax.ModularCompilationUnit"--_ModularCompilationUnit_imports = Core.Name "imports"--_ModularCompilationUnit_module = Core.Name "module"--data PackageDeclaration =-  PackageDeclaration {-    packageDeclarationModifiers :: [PackageModifier],-    packageDeclarationIdentifiers :: [Identifier]}-  deriving (Eq, Ord, Read, Show)--_PackageDeclaration = Core.Name "hydra.java.syntax.PackageDeclaration"--_PackageDeclaration_modifiers = Core.Name "modifiers"--_PackageDeclaration_identifiers = Core.Name "identifiers"--newtype PackageModifier =-  PackageModifier {-    unPackageModifier :: Annotation}-  deriving (Eq, Ord, Read, Show)--_PackageModifier = Core.Name "hydra.java.syntax.PackageModifier"--data ImportDeclaration =-  ImportDeclarationSingleType SingleTypeImportDeclaration |-  ImportDeclarationTypeImportOnDemand TypeImportOnDemandDeclaration |-  ImportDeclarationSingleStaticImport SingleStaticImportDeclaration |-  ImportDeclarationStaticImportOnDemand StaticImportOnDemandDeclaration-  deriving (Eq, Ord, Read, Show)--_ImportDeclaration = Core.Name "hydra.java.syntax.ImportDeclaration"--_ImportDeclaration_singleType = Core.Name "singleType"--_ImportDeclaration_typeImportOnDemand = Core.Name "typeImportOnDemand"--_ImportDeclaration_singleStaticImport = Core.Name "singleStaticImport"--_ImportDeclaration_staticImportOnDemand = Core.Name "staticImportOnDemand"--newtype SingleTypeImportDeclaration =-  SingleTypeImportDeclaration {-    unSingleTypeImportDeclaration :: TypeName}-  deriving (Eq, Ord, Read, Show)--_SingleTypeImportDeclaration = Core.Name "hydra.java.syntax.SingleTypeImportDeclaration"--newtype TypeImportOnDemandDeclaration =-  TypeImportOnDemandDeclaration {-    unTypeImportOnDemandDeclaration :: PackageOrTypeName}-  deriving (Eq, Ord, Read, Show)--_TypeImportOnDemandDeclaration = Core.Name "hydra.java.syntax.TypeImportOnDemandDeclaration"--data SingleStaticImportDeclaration =-  SingleStaticImportDeclaration {-    singleStaticImportDeclarationTypeName :: TypeName,-    singleStaticImportDeclarationIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_SingleStaticImportDeclaration = Core.Name "hydra.java.syntax.SingleStaticImportDeclaration"--_SingleStaticImportDeclaration_typeName = Core.Name "typeName"--_SingleStaticImportDeclaration_identifier = Core.Name "identifier"--newtype StaticImportOnDemandDeclaration =-  StaticImportOnDemandDeclaration {-    unStaticImportOnDemandDeclaration :: TypeName}-  deriving (Eq, Ord, Read, Show)--_StaticImportOnDemandDeclaration = Core.Name "hydra.java.syntax.StaticImportOnDemandDeclaration"--data TopLevelClassOrInterfaceDeclaration =-  TopLevelClassOrInterfaceDeclarationClass ClassDeclaration |-  TopLevelClassOrInterfaceDeclarationInterface InterfaceDeclaration |-  TopLevelClassOrInterfaceDeclarationNone-  deriving (Eq, Ord, Read, Show)--_TopLevelClassOrInterfaceDeclaration = Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"--_TopLevelClassOrInterfaceDeclaration_class = Core.Name "class"--_TopLevelClassOrInterfaceDeclaration_interface = Core.Name "interface"--_TopLevelClassOrInterfaceDeclaration_none = Core.Name "none"--data TopLevelClassOrInterfaceDeclarationWithComments =-  TopLevelClassOrInterfaceDeclarationWithComments {-    topLevelClassOrInterfaceDeclarationWithCommentsValue :: TopLevelClassOrInterfaceDeclaration,-    topLevelClassOrInterfaceDeclarationWithCommentsComments :: (Maybe String)}-  deriving (Eq, Ord, Read, Show)--_TopLevelClassOrInterfaceDeclarationWithComments =-    Core.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"--_TopLevelClassOrInterfaceDeclarationWithComments_value = Core.Name "value"--_TopLevelClassOrInterfaceDeclarationWithComments_comments = Core.Name "comments"--data ModuleDeclaration =-  ModuleDeclaration {-    moduleDeclarationAnnotations :: [Annotation],-    moduleDeclarationOpen :: Bool,-    moduleDeclarationIdentifiers :: [Identifier],-    moduleDeclarationDirectives :: [ModuleDirective]}-  deriving (Eq, Ord, Read, Show)--_ModuleDeclaration = Core.Name "hydra.java.syntax.ModuleDeclaration"--_ModuleDeclaration_annotations = Core.Name "annotations"--_ModuleDeclaration_open = Core.Name "open"--_ModuleDeclaration_identifiers = Core.Name "identifiers"--_ModuleDeclaration_directives = Core.Name "directives"--data ModuleDirective =-  ModuleDirectiveRequires ModuleDirective_Requires |-  ModuleDirectiveExports ModuleDirective_ExportsOrOpens |-  ModuleDirectiveOpens ModuleDirective_ExportsOrOpens |-  ModuleDirectiveUses TypeName |-  ModuleDirectiveProvides ModuleDirective_Provides-  deriving (Eq, Ord, Read, Show)--_ModuleDirective = Core.Name "hydra.java.syntax.ModuleDirective"--_ModuleDirective_requires = Core.Name "requires"--_ModuleDirective_exports = Core.Name "exports"--_ModuleDirective_opens = Core.Name "opens"--_ModuleDirective_uses = Core.Name "uses"--_ModuleDirective_provides = Core.Name "provides"--data ModuleDirective_Requires =-  ModuleDirective_Requires {-    moduleDirective_RequiresModifiers :: [RequiresModifier],-    moduleDirective_RequiresModule :: ModuleName}-  deriving (Eq, Ord, Read, Show)--_ModuleDirective_Requires = Core.Name "hydra.java.syntax.ModuleDirective_Requires"--_ModuleDirective_Requires_modifiers = Core.Name "modifiers"--_ModuleDirective_Requires_module = Core.Name "module"--data ModuleDirective_ExportsOrOpens =-  ModuleDirective_ExportsOrOpens {-    moduleDirective_ExportsOrOpensPackage :: PackageName,-    -- | At least one module-    moduleDirective_ExportsOrOpensModules :: [ModuleName]}-  deriving (Eq, Ord, Read, Show)--_ModuleDirective_ExportsOrOpens = Core.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"--_ModuleDirective_ExportsOrOpens_package = Core.Name "package"--_ModuleDirective_ExportsOrOpens_modules = Core.Name "modules"--data ModuleDirective_Provides =-  ModuleDirective_Provides {-    moduleDirective_ProvidesTo :: TypeName,-    -- | At least one type-    moduleDirective_ProvidesWith :: [TypeName]}-  deriving (Eq, Ord, Read, Show)--_ModuleDirective_Provides = Core.Name "hydra.java.syntax.ModuleDirective_Provides"--_ModuleDirective_Provides_to = Core.Name "to"--_ModuleDirective_Provides_with = Core.Name "with"--data RequiresModifier =-  RequiresModifierTransitive |-  RequiresModifierStatic-  deriving (Eq, Ord, Read, Show)--_RequiresModifier = Core.Name "hydra.java.syntax.RequiresModifier"--_RequiresModifier_transitive = Core.Name "transitive"--_RequiresModifier_static = Core.Name "static"--data ClassDeclaration =-  ClassDeclarationNormal NormalClassDeclaration |-  ClassDeclarationEnum EnumDeclaration |-  ClassDeclarationRecord RecordDeclaration-  deriving (Eq, Ord, Read, Show)--_ClassDeclaration = Core.Name "hydra.java.syntax.ClassDeclaration"--_ClassDeclaration_normal = Core.Name "normal"--_ClassDeclaration_enum = Core.Name "enum"--_ClassDeclaration_record = Core.Name "record"--data NormalClassDeclaration =-  NormalClassDeclaration {-    normalClassDeclarationModifiers :: [ClassModifier],-    normalClassDeclarationIdentifier :: TypeIdentifier,-    normalClassDeclarationParameters :: [TypeParameter],-    normalClassDeclarationExtends :: (Maybe ClassType),-    normalClassDeclarationImplements :: [InterfaceType],-    normalClassDeclarationPermits :: [TypeName],-    normalClassDeclarationBody :: ClassBody}-  deriving (Eq, Ord, Read, Show)--_NormalClassDeclaration = Core.Name "hydra.java.syntax.NormalClassDeclaration"--_NormalClassDeclaration_modifiers = Core.Name "modifiers"--_NormalClassDeclaration_identifier = Core.Name "identifier"--_NormalClassDeclaration_parameters = Core.Name "parameters"--_NormalClassDeclaration_extends = Core.Name "extends"--_NormalClassDeclaration_implements = Core.Name "implements"--_NormalClassDeclaration_permits = Core.Name "permits"--_NormalClassDeclaration_body = Core.Name "body"--data ClassModifier =-  ClassModifierAnnotation Annotation |-  ClassModifierPublic |-  ClassModifierProtected |-  ClassModifierPrivate |-  ClassModifierAbstract |-  ClassModifierStatic |-  ClassModifierFinal |-  ClassModifierSealed |-  ClassModifierNonSealed |-  ClassModifierStrictfp-  deriving (Eq, Ord, Read, Show)--_ClassModifier = Core.Name "hydra.java.syntax.ClassModifier"--_ClassModifier_annotation = Core.Name "annotation"--_ClassModifier_public = Core.Name "public"--_ClassModifier_protected = Core.Name "protected"--_ClassModifier_private = Core.Name "private"--_ClassModifier_abstract = Core.Name "abstract"--_ClassModifier_static = Core.Name "static"--_ClassModifier_final = Core.Name "final"--_ClassModifier_sealed = Core.Name "sealed"--_ClassModifier_nonSealed = Core.Name "nonSealed"--_ClassModifier_strictfp = Core.Name "strictfp"--newtype ClassBody =-  ClassBody {-    unClassBody :: [ClassBodyDeclarationWithComments]}-  deriving (Eq, Ord, Read, Show)--_ClassBody = Core.Name "hydra.java.syntax.ClassBody"--data ClassBodyDeclaration =-  ClassBodyDeclarationClassMember ClassMemberDeclaration |-  ClassBodyDeclarationInstanceInitializer InstanceInitializer |-  ClassBodyDeclarationStaticInitializer StaticInitializer |-  ClassBodyDeclarationConstructorDeclaration ConstructorDeclaration-  deriving (Eq, Ord, Read, Show)--_ClassBodyDeclaration = Core.Name "hydra.java.syntax.ClassBodyDeclaration"--_ClassBodyDeclaration_classMember = Core.Name "classMember"--_ClassBodyDeclaration_instanceInitializer = Core.Name "instanceInitializer"--_ClassBodyDeclaration_staticInitializer = Core.Name "staticInitializer"--_ClassBodyDeclaration_constructorDeclaration = Core.Name "constructorDeclaration"--data ClassBodyDeclarationWithComments =-  ClassBodyDeclarationWithComments {-    classBodyDeclarationWithCommentsValue :: ClassBodyDeclaration,-    classBodyDeclarationWithCommentsComments :: (Maybe String)}-  deriving (Eq, Ord, Read, Show)--_ClassBodyDeclarationWithComments = Core.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"--_ClassBodyDeclarationWithComments_value = Core.Name "value"--_ClassBodyDeclarationWithComments_comments = Core.Name "comments"--data ClassMemberDeclaration =-  ClassMemberDeclarationField FieldDeclaration |-  ClassMemberDeclarationMethod MethodDeclaration |-  ClassMemberDeclarationClass ClassDeclaration |-  ClassMemberDeclarationInterface InterfaceDeclaration |-  ClassMemberDeclarationNone-  deriving (Eq, Ord, Read, Show)--_ClassMemberDeclaration = Core.Name "hydra.java.syntax.ClassMemberDeclaration"--_ClassMemberDeclaration_field = Core.Name "field"--_ClassMemberDeclaration_method = Core.Name "method"--_ClassMemberDeclaration_class = Core.Name "class"--_ClassMemberDeclaration_interface = Core.Name "interface"--_ClassMemberDeclaration_none = Core.Name "none"--data FieldDeclaration =-  FieldDeclaration {-    fieldDeclarationModifiers :: [FieldModifier],-    fieldDeclarationUnannType :: UnannType,-    fieldDeclarationVariableDeclarators :: [VariableDeclarator]}-  deriving (Eq, Ord, Read, Show)--_FieldDeclaration = Core.Name "hydra.java.syntax.FieldDeclaration"--_FieldDeclaration_modifiers = Core.Name "modifiers"--_FieldDeclaration_unannType = Core.Name "unannType"--_FieldDeclaration_variableDeclarators = Core.Name "variableDeclarators"--data FieldModifier =-  FieldModifierAnnotation Annotation |-  FieldModifierPublic |-  FieldModifierProtected |-  FieldModifierPrivate |-  FieldModifierStatic |-  FieldModifierFinal |-  FieldModifierTransient |-  FieldModifierVolatile-  deriving (Eq, Ord, Read, Show)--_FieldModifier = Core.Name "hydra.java.syntax.FieldModifier"--_FieldModifier_annotation = Core.Name "annotation"--_FieldModifier_public = Core.Name "public"--_FieldModifier_protected = Core.Name "protected"--_FieldModifier_private = Core.Name "private"--_FieldModifier_static = Core.Name "static"--_FieldModifier_final = Core.Name "final"--_FieldModifier_transient = Core.Name "transient"--_FieldModifier_volatile = Core.Name "volatile"--data VariableDeclarator =-  VariableDeclarator {-    variableDeclaratorId :: VariableDeclaratorId,-    variableDeclaratorInitializer :: (Maybe VariableInitializer)}-  deriving (Eq, Ord, Read, Show)--_VariableDeclarator = Core.Name "hydra.java.syntax.VariableDeclarator"--_VariableDeclarator_id = Core.Name "id"--_VariableDeclarator_initializer = Core.Name "initializer"--data VariableDeclaratorId =-  VariableDeclaratorId {-    variableDeclaratorIdIdentifier :: Identifier,-    variableDeclaratorIdDims :: (Maybe Dims)}-  deriving (Eq, Ord, Read, Show)--_VariableDeclaratorId = Core.Name "hydra.java.syntax.VariableDeclaratorId"--_VariableDeclaratorId_identifier = Core.Name "identifier"--_VariableDeclaratorId_dims = Core.Name "dims"--data VariableInitializer =-  VariableInitializerExpression Expression |-  VariableInitializerArrayInitializer ArrayInitializer-  deriving (Eq, Ord, Read, Show)--_VariableInitializer = Core.Name "hydra.java.syntax.VariableInitializer"--_VariableInitializer_expression = Core.Name "expression"--_VariableInitializer_arrayInitializer = Core.Name "arrayInitializer"---- | A Type which does not allow annotations-newtype UnannType =-  UnannType {-    unUnannType :: Type}-  deriving (Eq, Ord, Read, Show)--_UnannType = Core.Name "hydra.java.syntax.UnannType"---- | A ClassType which does not allow annotations-newtype UnannClassType =-  UnannClassType {-    unUnannClassType :: ClassType}-  deriving (Eq, Ord, Read, Show)--_UnannClassType = Core.Name "hydra.java.syntax.UnannClassType"--data MethodDeclaration =-  MethodDeclaration {-    -- | Note: simple methods cannot have annotations-    methodDeclarationAnnotations :: [Annotation],-    methodDeclarationModifiers :: [MethodModifier],-    methodDeclarationHeader :: MethodHeader,-    methodDeclarationBody :: MethodBody}-  deriving (Eq, Ord, Read, Show)--_MethodDeclaration = Core.Name "hydra.java.syntax.MethodDeclaration"--_MethodDeclaration_annotations = Core.Name "annotations"--_MethodDeclaration_modifiers = Core.Name "modifiers"--_MethodDeclaration_header = Core.Name "header"--_MethodDeclaration_body = Core.Name "body"--data MethodModifier =-  MethodModifierAnnotation Annotation |-  MethodModifierPublic |-  MethodModifierProtected |-  MethodModifierPrivate |-  MethodModifierAbstract |-  MethodModifierStatic |-  MethodModifierFinal |-  MethodModifierSynchronized |-  MethodModifierNative |-  MethodModifierStrictfp-  deriving (Eq, Ord, Read, Show)--_MethodModifier = Core.Name "hydra.java.syntax.MethodModifier"--_MethodModifier_annotation = Core.Name "annotation"--_MethodModifier_public = Core.Name "public"--_MethodModifier_protected = Core.Name "protected"--_MethodModifier_private = Core.Name "private"--_MethodModifier_abstract = Core.Name "abstract"--_MethodModifier_static = Core.Name "static"--_MethodModifier_final = Core.Name "final"--_MethodModifier_synchronized = Core.Name "synchronized"--_MethodModifier_native = Core.Name "native"--_MethodModifier_strictfp = Core.Name "strictfp"--data MethodHeader =-  MethodHeader {-    methodHeaderParameters :: [TypeParameter],-    methodHeaderResult :: Result,-    methodHeaderDeclarator :: MethodDeclarator,-    methodHeaderThrows :: (Maybe Throws)}-  deriving (Eq, Ord, Read, Show)--_MethodHeader = Core.Name "hydra.java.syntax.MethodHeader"--_MethodHeader_parameters = Core.Name "parameters"--_MethodHeader_result = Core.Name "result"--_MethodHeader_declarator = Core.Name "declarator"--_MethodHeader_throws = Core.Name "throws"--data Result =-  ResultType UnannType |-  ResultVoid-  deriving (Eq, Ord, Read, Show)--_Result = Core.Name "hydra.java.syntax.Result"--_Result_type = Core.Name "type"--_Result_void = Core.Name "void"--data MethodDeclarator =-  MethodDeclarator {-    methodDeclaratorIdentifier :: Identifier,-    methodDeclaratorReceiverParameter :: (Maybe ReceiverParameter),-    methodDeclaratorFormalParameters :: [FormalParameter]}-  deriving (Eq, Ord, Read, Show)--_MethodDeclarator = Core.Name "hydra.java.syntax.MethodDeclarator"--_MethodDeclarator_identifier = Core.Name "identifier"--_MethodDeclarator_receiverParameter = Core.Name "receiverParameter"--_MethodDeclarator_formalParameters = Core.Name "formalParameters"--data ReceiverParameter =-  ReceiverParameter {-    receiverParameterAnnotations :: [Annotation],-    receiverParameterUnannType :: UnannType,-    receiverParameterIdentifier :: (Maybe Identifier)}-  deriving (Eq, Ord, Read, Show)--_ReceiverParameter = Core.Name "hydra.java.syntax.ReceiverParameter"--_ReceiverParameter_annotations = Core.Name "annotations"--_ReceiverParameter_unannType = Core.Name "unannType"--_ReceiverParameter_identifier = Core.Name "identifier"--data FormalParameter =-  FormalParameterSimple FormalParameter_Simple |-  FormalParameterVariableArity VariableArityParameter-  deriving (Eq, Ord, Read, Show)--_FormalParameter = Core.Name "hydra.java.syntax.FormalParameter"--_FormalParameter_simple = Core.Name "simple"--_FormalParameter_variableArity = Core.Name "variableArity"--data FormalParameter_Simple =-  FormalParameter_Simple {-    formalParameter_SimpleModifiers :: [VariableModifier],-    formalParameter_SimpleType :: UnannType,-    formalParameter_SimpleId :: VariableDeclaratorId}-  deriving (Eq, Ord, Read, Show)--_FormalParameter_Simple = Core.Name "hydra.java.syntax.FormalParameter_Simple"--_FormalParameter_Simple_modifiers = Core.Name "modifiers"--_FormalParameter_Simple_type = Core.Name "type"--_FormalParameter_Simple_id = Core.Name "id"--data VariableArityParameter =-  VariableArityParameter {-    variableArityParameterModifiers :: [VariableModifier],-    variableArityParameterType :: UnannType,-    variableArityParameterAnnotations :: [Annotation],-    variableArityParameterIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_VariableArityParameter = Core.Name "hydra.java.syntax.VariableArityParameter"--_VariableArityParameter_modifiers = Core.Name "modifiers"--_VariableArityParameter_type = Core.Name "type"--_VariableArityParameter_annotations = Core.Name "annotations"--_VariableArityParameter_identifier = Core.Name "identifier"--data VariableModifier =-  VariableModifierAnnotation Annotation |-  VariableModifierFinal-  deriving (Eq, Ord, Read, Show)--_VariableModifier = Core.Name "hydra.java.syntax.VariableModifier"--_VariableModifier_annotation = Core.Name "annotation"--_VariableModifier_final = Core.Name "final"--newtype Throws =-  Throws {-    unThrows :: [ExceptionType]}-  deriving (Eq, Ord, Read, Show)--_Throws = Core.Name "hydra.java.syntax.Throws"--data ExceptionType =-  ExceptionTypeClass ClassType |-  ExceptionTypeVariable TypeVariable-  deriving (Eq, Ord, Read, Show)--_ExceptionType = Core.Name "hydra.java.syntax.ExceptionType"--_ExceptionType_class = Core.Name "class"--_ExceptionType_variable = Core.Name "variable"--data MethodBody =-  MethodBodyBlock Block |-  MethodBodyNone-  deriving (Eq, Ord, Read, Show)--_MethodBody = Core.Name "hydra.java.syntax.MethodBody"--_MethodBody_block = Core.Name "block"--_MethodBody_none = Core.Name "none"--newtype InstanceInitializer =-  InstanceInitializer {-    unInstanceInitializer :: Block}-  deriving (Eq, Ord, Read, Show)--_InstanceInitializer = Core.Name "hydra.java.syntax.InstanceInitializer"--newtype StaticInitializer =-  StaticInitializer {-    unStaticInitializer :: Block}-  deriving (Eq, Ord, Read, Show)--_StaticInitializer = Core.Name "hydra.java.syntax.StaticInitializer"--data ConstructorDeclaration =-  ConstructorDeclaration {-    constructorDeclarationModifiers :: [ConstructorModifier],-    constructorDeclarationConstructor :: ConstructorDeclarator,-    constructorDeclarationThrows :: (Maybe Throws),-    constructorDeclarationBody :: ConstructorBody}-  deriving (Eq, Ord, Read, Show)--_ConstructorDeclaration = Core.Name "hydra.java.syntax.ConstructorDeclaration"--_ConstructorDeclaration_modifiers = Core.Name "modifiers"--_ConstructorDeclaration_constructor = Core.Name "constructor"--_ConstructorDeclaration_throws = Core.Name "throws"--_ConstructorDeclaration_body = Core.Name "body"--data ConstructorModifier =-  ConstructorModifierAnnotation Annotation |-  ConstructorModifierPublic |-  ConstructorModifierProtected |-  ConstructorModifierPrivate-  deriving (Eq, Ord, Read, Show)--_ConstructorModifier = Core.Name "hydra.java.syntax.ConstructorModifier"--_ConstructorModifier_annotation = Core.Name "annotation"--_ConstructorModifier_public = Core.Name "public"--_ConstructorModifier_protected = Core.Name "protected"--_ConstructorModifier_private = Core.Name "private"--data ConstructorDeclarator =-  ConstructorDeclarator {-    constructorDeclaratorParameters :: [TypeParameter],-    constructorDeclaratorName :: SimpleTypeName,-    constructorDeclaratorReceiverParameter :: (Maybe ReceiverParameter),-    constructorDeclaratorFormalParameters :: [FormalParameter]}-  deriving (Eq, Ord, Read, Show)--_ConstructorDeclarator = Core.Name "hydra.java.syntax.ConstructorDeclarator"--_ConstructorDeclarator_parameters = Core.Name "parameters"--_ConstructorDeclarator_name = Core.Name "name"--_ConstructorDeclarator_receiverParameter = Core.Name "receiverParameter"--_ConstructorDeclarator_formalParameters = Core.Name "formalParameters"--newtype SimpleTypeName =-  SimpleTypeName {-    unSimpleTypeName :: TypeIdentifier}-  deriving (Eq, Ord, Read, Show)--_SimpleTypeName = Core.Name "hydra.java.syntax.SimpleTypeName"--data ConstructorBody =-  ConstructorBody {-    constructorBodyInvocation :: (Maybe ExplicitConstructorInvocation),-    constructorBodyStatements :: [BlockStatement]}-  deriving (Eq, Ord, Read, Show)--_ConstructorBody = Core.Name "hydra.java.syntax.ConstructorBody"--_ConstructorBody_invocation = Core.Name "invocation"--_ConstructorBody_statements = Core.Name "statements"--data ExplicitConstructorInvocation =-  ExplicitConstructorInvocation {-    explicitConstructorInvocationTypeArguments :: [TypeArgument],-    explicitConstructorInvocationArguments :: [Expression],-    explicitConstructorInvocationVariant :: ExplicitConstructorInvocation_Variant}-  deriving (Eq, Ord, Read, Show)--_ExplicitConstructorInvocation = Core.Name "hydra.java.syntax.ExplicitConstructorInvocation"--_ExplicitConstructorInvocation_typeArguments = Core.Name "typeArguments"--_ExplicitConstructorInvocation_arguments = Core.Name "arguments"--_ExplicitConstructorInvocation_variant = Core.Name "variant"--data ExplicitConstructorInvocation_Variant =-  ExplicitConstructorInvocation_VariantThis |-  ExplicitConstructorInvocation_VariantSuper (Maybe ExpressionName) |-  ExplicitConstructorInvocation_VariantPrimary Primary-  deriving (Eq, Ord, Read, Show)--_ExplicitConstructorInvocation_Variant = Core.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"--_ExplicitConstructorInvocation_Variant_this = Core.Name "this"--_ExplicitConstructorInvocation_Variant_super = Core.Name "super"--_ExplicitConstructorInvocation_Variant_primary = Core.Name "primary"--data EnumDeclaration =-  EnumDeclaration {-    enumDeclarationModifiers :: [ClassModifier],-    enumDeclarationIdentifier :: TypeIdentifier,-    enumDeclarationImplements :: [InterfaceType],-    enumDeclarationBody :: EnumBody}-  deriving (Eq, Ord, Read, Show)--_EnumDeclaration = Core.Name "hydra.java.syntax.EnumDeclaration"--_EnumDeclaration_modifiers = Core.Name "modifiers"--_EnumDeclaration_identifier = Core.Name "identifier"--_EnumDeclaration_implements = Core.Name "implements"--_EnumDeclaration_body = Core.Name "body"--newtype EnumBody =-  EnumBody {-    unEnumBody :: [EnumBody_Element]}-  deriving (Eq, Ord, Read, Show)--_EnumBody = Core.Name "hydra.java.syntax.EnumBody"--data EnumBody_Element =-  EnumBody_Element {-    enumBody_ElementConstants :: [EnumConstant],-    enumBody_ElementBodyDeclarations :: [ClassBodyDeclaration]}-  deriving (Eq, Ord, Read, Show)--_EnumBody_Element = Core.Name "hydra.java.syntax.EnumBody_Element"--_EnumBody_Element_constants = Core.Name "constants"--_EnumBody_Element_bodyDeclarations = Core.Name "bodyDeclarations"--data EnumConstant =-  EnumConstant {-    enumConstantModifiers :: [EnumConstantModifier],-    enumConstantIdentifier :: Identifier,-    enumConstantArguments :: (Maybe [Expression]),-    enumConstantBody :: (Maybe ClassBody)}-  deriving (Eq, Ord, Read, Show)--_EnumConstant = Core.Name "hydra.java.syntax.EnumConstant"--_EnumConstant_modifiers = Core.Name "modifiers"--_EnumConstant_identifier = Core.Name "identifier"--_EnumConstant_arguments = Core.Name "arguments"--_EnumConstant_body = Core.Name "body"--newtype EnumConstantModifier =-  EnumConstantModifier {-    unEnumConstantModifier :: Annotation}-  deriving (Eq, Ord, Read, Show)--_EnumConstantModifier = Core.Name "hydra.java.syntax.EnumConstantModifier"--data RecordDeclaration =-  RecordDeclaration {-    recordDeclarationModifiers :: [ClassModifier],-    recordDeclarationIdentifier :: TypeIdentifier,-    recordDeclarationParameters :: [TypeParameter],-    recordDeclarationHeader :: RecordHeader,-    recordDeclarationImplements :: [InterfaceType],-    recordDeclarationBody :: RecordBody}-  deriving (Eq, Ord, Read, Show)--_RecordDeclaration = Core.Name "hydra.java.syntax.RecordDeclaration"--_RecordDeclaration_modifiers = Core.Name "modifiers"--_RecordDeclaration_identifier = Core.Name "identifier"--_RecordDeclaration_parameters = Core.Name "parameters"--_RecordDeclaration_header = Core.Name "header"--_RecordDeclaration_implements = Core.Name "implements"--_RecordDeclaration_body = Core.Name "body"--newtype RecordHeader =-  RecordHeader {-    unRecordHeader :: [RecordComponent]}-  deriving (Eq, Ord, Read, Show)--_RecordHeader = Core.Name "hydra.java.syntax.RecordHeader"--data RecordComponent =-  RecordComponentSimple RecordComponent_Simple |-  RecordComponentVariableArity VariableArityRecordComponent-  deriving (Eq, Ord, Read, Show)--_RecordComponent = Core.Name "hydra.java.syntax.RecordComponent"--_RecordComponent_simple = Core.Name "simple"--_RecordComponent_variableArity = Core.Name "variableArity"--data RecordComponent_Simple =-  RecordComponent_Simple {-    recordComponent_SimpleModifiers :: [RecordComponentModifier],-    recordComponent_SimpleType :: UnannType,-    recordComponent_SimpleIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_RecordComponent_Simple = Core.Name "hydra.java.syntax.RecordComponent_Simple"--_RecordComponent_Simple_modifiers = Core.Name "modifiers"--_RecordComponent_Simple_type = Core.Name "type"--_RecordComponent_Simple_identifier = Core.Name "identifier"--data VariableArityRecordComponent =-  VariableArityRecordComponent {-    variableArityRecordComponentModifiers :: [RecordComponentModifier],-    variableArityRecordComponentType :: UnannType,-    variableArityRecordComponentAnnotations :: [Annotation],-    variableArityRecordComponentIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_VariableArityRecordComponent = Core.Name "hydra.java.syntax.VariableArityRecordComponent"--_VariableArityRecordComponent_modifiers = Core.Name "modifiers"--_VariableArityRecordComponent_type = Core.Name "type"--_VariableArityRecordComponent_annotations = Core.Name "annotations"--_VariableArityRecordComponent_identifier = Core.Name "identifier"--newtype RecordComponentModifier =-  RecordComponentModifier {-    unRecordComponentModifier :: Annotation}-  deriving (Eq, Ord, Read, Show)--_RecordComponentModifier = Core.Name "hydra.java.syntax.RecordComponentModifier"--newtype RecordBody =-  RecordBody {-    unRecordBody :: [RecordBodyDeclaration]}-  deriving (Eq, Ord, Read, Show)--_RecordBody = Core.Name "hydra.java.syntax.RecordBody"--data RecordBodyDeclaration =-  RecordBodyDeclarationClassBody ClassBodyDeclaration |-  RecordBodyDeclarationCompactConstructor CompactConstructorDeclaration-  deriving (Eq, Ord, Read, Show)--_RecordBodyDeclaration = Core.Name "hydra.java.syntax.RecordBodyDeclaration"--_RecordBodyDeclaration_classBody = Core.Name "classBody"--_RecordBodyDeclaration_compactConstructor = Core.Name "compactConstructor"--data CompactConstructorDeclaration =-  CompactConstructorDeclaration {-    compactConstructorDeclarationModifiers :: [ConstructorModifier],-    compactConstructorDeclarationName :: SimpleTypeName,-    compactConstructorDeclarationBody :: ConstructorBody}-  deriving (Eq, Ord, Read, Show)--_CompactConstructorDeclaration = Core.Name "hydra.java.syntax.CompactConstructorDeclaration"--_CompactConstructorDeclaration_modifiers = Core.Name "modifiers"--_CompactConstructorDeclaration_name = Core.Name "name"--_CompactConstructorDeclaration_body = Core.Name "body"--data InterfaceDeclaration =-  InterfaceDeclarationNormalInterface NormalInterfaceDeclaration |-  InterfaceDeclarationAnnotationInterface AnnotationInterfaceDeclaration-  deriving (Eq, Ord, Read, Show)--_InterfaceDeclaration = Core.Name "hydra.java.syntax.InterfaceDeclaration"--_InterfaceDeclaration_normalInterface = Core.Name "normalInterface"--_InterfaceDeclaration_annotationInterface = Core.Name "annotationInterface"--data NormalInterfaceDeclaration =-  NormalInterfaceDeclaration {-    normalInterfaceDeclarationModifiers :: [InterfaceModifier],-    normalInterfaceDeclarationIdentifier :: TypeIdentifier,-    normalInterfaceDeclarationParameters :: [TypeParameter],-    normalInterfaceDeclarationExtends :: [InterfaceType],-    normalInterfaceDeclarationPermits :: [TypeName],-    normalInterfaceDeclarationBody :: InterfaceBody}-  deriving (Eq, Ord, Read, Show)--_NormalInterfaceDeclaration = Core.Name "hydra.java.syntax.NormalInterfaceDeclaration"--_NormalInterfaceDeclaration_modifiers = Core.Name "modifiers"--_NormalInterfaceDeclaration_identifier = Core.Name "identifier"--_NormalInterfaceDeclaration_parameters = Core.Name "parameters"--_NormalInterfaceDeclaration_extends = Core.Name "extends"--_NormalInterfaceDeclaration_permits = Core.Name "permits"--_NormalInterfaceDeclaration_body = Core.Name "body"--data InterfaceModifier =-  InterfaceModifierAnnotation Annotation |-  InterfaceModifierPublic |-  InterfaceModifierProtected |-  InterfaceModifierPrivate |-  InterfaceModifierAbstract |-  InterfaceModifierStatic |-  InterfaceModifierSealed |-  InterfaceModifierNonSealed |-  InterfaceModifierStrictfp-  deriving (Eq, Ord, Read, Show)--_InterfaceModifier = Core.Name "hydra.java.syntax.InterfaceModifier"--_InterfaceModifier_annotation = Core.Name "annotation"--_InterfaceModifier_public = Core.Name "public"--_InterfaceModifier_protected = Core.Name "protected"--_InterfaceModifier_private = Core.Name "private"--_InterfaceModifier_abstract = Core.Name "abstract"--_InterfaceModifier_static = Core.Name "static"--_InterfaceModifier_sealed = Core.Name "sealed"--_InterfaceModifier_nonSealed = Core.Name "nonSealed"--_InterfaceModifier_strictfp = Core.Name "strictfp"--newtype InterfaceBody =-  InterfaceBody {-    unInterfaceBody :: [InterfaceMemberDeclarationWithComments]}-  deriving (Eq, Ord, Read, Show)--_InterfaceBody = Core.Name "hydra.java.syntax.InterfaceBody"--data InterfaceMemberDeclaration =-  InterfaceMemberDeclarationConstant ConstantDeclaration |-  InterfaceMemberDeclarationInterfaceMethod InterfaceMethodDeclaration |-  InterfaceMemberDeclarationClass ClassDeclaration |-  InterfaceMemberDeclarationInterface InterfaceDeclaration-  deriving (Eq, Ord, Read, Show)--_InterfaceMemberDeclaration = Core.Name "hydra.java.syntax.InterfaceMemberDeclaration"--_InterfaceMemberDeclaration_constant = Core.Name "constant"--_InterfaceMemberDeclaration_interfaceMethod = Core.Name "interfaceMethod"--_InterfaceMemberDeclaration_class = Core.Name "class"--_InterfaceMemberDeclaration_interface = Core.Name "interface"--data InterfaceMemberDeclarationWithComments =-  InterfaceMemberDeclarationWithComments {-    interfaceMemberDeclarationWithCommentsValue :: InterfaceMemberDeclaration,-    interfaceMemberDeclarationWithCommentsComments :: (Maybe String)}-  deriving (Eq, Ord, Read, Show)--_InterfaceMemberDeclarationWithComments = Core.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"--_InterfaceMemberDeclarationWithComments_value = Core.Name "value"--_InterfaceMemberDeclarationWithComments_comments = Core.Name "comments"--data ConstantDeclaration =-  ConstantDeclaration {-    constantDeclarationModifiers :: [ConstantModifier],-    constantDeclarationType :: UnannType,-    constantDeclarationVariables :: [VariableDeclarator]}-  deriving (Eq, Ord, Read, Show)--_ConstantDeclaration = Core.Name "hydra.java.syntax.ConstantDeclaration"--_ConstantDeclaration_modifiers = Core.Name "modifiers"--_ConstantDeclaration_type = Core.Name "type"--_ConstantDeclaration_variables = Core.Name "variables"--data ConstantModifier =-  ConstantModifierAnnotation Annotation |-  ConstantModifierPublic |-  ConstantModifierStatic |-  ConstantModifierFinal-  deriving (Eq, Ord, Read, Show)--_ConstantModifier = Core.Name "hydra.java.syntax.ConstantModifier"--_ConstantModifier_annotation = Core.Name "annotation"--_ConstantModifier_public = Core.Name "public"--_ConstantModifier_static = Core.Name "static"--_ConstantModifier_final = Core.Name "final"--data InterfaceMethodDeclaration =-  InterfaceMethodDeclaration {-    interfaceMethodDeclarationModifiers :: [InterfaceMethodModifier],-    interfaceMethodDeclarationHeader :: MethodHeader,-    interfaceMethodDeclarationBody :: MethodBody}-  deriving (Eq, Ord, Read, Show)--_InterfaceMethodDeclaration = Core.Name "hydra.java.syntax.InterfaceMethodDeclaration"--_InterfaceMethodDeclaration_modifiers = Core.Name "modifiers"--_InterfaceMethodDeclaration_header = Core.Name "header"--_InterfaceMethodDeclaration_body = Core.Name "body"--data InterfaceMethodModifier =-  InterfaceMethodModifierAnnotation Annotation |-  InterfaceMethodModifierPublic |-  InterfaceMethodModifierPrivate |-  InterfaceMethodModifierAbstract |-  InterfaceMethodModifierDefault |-  InterfaceMethodModifierStatic |-  InterfaceMethodModifierStrictfp-  deriving (Eq, Ord, Read, Show)--_InterfaceMethodModifier = Core.Name "hydra.java.syntax.InterfaceMethodModifier"--_InterfaceMethodModifier_annotation = Core.Name "annotation"--_InterfaceMethodModifier_public = Core.Name "public"--_InterfaceMethodModifier_private = Core.Name "private"--_InterfaceMethodModifier_abstract = Core.Name "abstract"--_InterfaceMethodModifier_default = Core.Name "default"--_InterfaceMethodModifier_static = Core.Name "static"--_InterfaceMethodModifier_strictfp = Core.Name "strictfp"--data AnnotationInterfaceDeclaration =-  AnnotationInterfaceDeclaration {-    annotationInterfaceDeclarationModifiers :: [InterfaceModifier],-    annotationInterfaceDeclarationIdentifier :: TypeIdentifier,-    annotationInterfaceDeclarationBody :: AnnotationInterfaceBody}-  deriving (Eq, Ord, Read, Show)--_AnnotationInterfaceDeclaration = Core.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"--_AnnotationInterfaceDeclaration_modifiers = Core.Name "modifiers"--_AnnotationInterfaceDeclaration_identifier = Core.Name "identifier"--_AnnotationInterfaceDeclaration_body = Core.Name "body"--newtype AnnotationInterfaceBody =-  AnnotationInterfaceBody {-    unAnnotationInterfaceBody :: [AnnotationInterfaceMemberDeclaration]}-  deriving (Eq, Ord, Read, Show)--_AnnotationInterfaceBody = Core.Name "hydra.java.syntax.AnnotationInterfaceBody"--data AnnotationInterfaceMemberDeclaration =-  AnnotationInterfaceMemberDeclarationAnnotationInterface AnnotationInterfaceElementDeclaration |-  AnnotationInterfaceMemberDeclarationConstant ConstantDeclaration |-  AnnotationInterfaceMemberDeclarationClass ClassDeclaration |-  AnnotationInterfaceMemberDeclarationInterface InterfaceDeclaration-  deriving (Eq, Ord, Read, Show)--_AnnotationInterfaceMemberDeclaration = Core.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"--_AnnotationInterfaceMemberDeclaration_annotationInterface = Core.Name "annotationInterface"--_AnnotationInterfaceMemberDeclaration_constant = Core.Name "constant"--_AnnotationInterfaceMemberDeclaration_class = Core.Name "class"--_AnnotationInterfaceMemberDeclaration_interface = Core.Name "interface"--data AnnotationInterfaceElementDeclaration =-  AnnotationInterfaceElementDeclaration {-    annotationInterfaceElementDeclarationModifiers :: [AnnotationInterfaceElementModifier],-    annotationInterfaceElementDeclarationType :: UnannType,-    annotationInterfaceElementDeclarationIdentifier :: Identifier,-    annotationInterfaceElementDeclarationDims :: (Maybe Dims),-    annotationInterfaceElementDeclarationDefault :: (Maybe DefaultValue)}-  deriving (Eq, Ord, Read, Show)--_AnnotationInterfaceElementDeclaration = Core.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"--_AnnotationInterfaceElementDeclaration_modifiers = Core.Name "modifiers"--_AnnotationInterfaceElementDeclaration_type = Core.Name "type"--_AnnotationInterfaceElementDeclaration_identifier = Core.Name "identifier"--_AnnotationInterfaceElementDeclaration_dims = Core.Name "dims"--_AnnotationInterfaceElementDeclaration_default = Core.Name "default"--data AnnotationInterfaceElementModifier =-  AnnotationInterfaceElementModifierAnnotation Annotation |-  AnnotationInterfaceElementModifierPublic |-  AnnotationInterfaceElementModifierAbstract-  deriving (Eq, Ord, Read, Show)--_AnnotationInterfaceElementModifier = Core.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"--_AnnotationInterfaceElementModifier_annotation = Core.Name "annotation"--_AnnotationInterfaceElementModifier_public = Core.Name "public"--_AnnotationInterfaceElementModifier_abstract = Core.Name "abstract"--newtype DefaultValue =-  DefaultValue {-    unDefaultValue :: ElementValue}-  deriving (Eq, Ord, Read, Show)--_DefaultValue = Core.Name "hydra.java.syntax.DefaultValue"--data Annotation =-  AnnotationNormal NormalAnnotation |-  AnnotationMarker MarkerAnnotation |-  AnnotationSingleElement SingleElementAnnotation-  deriving (Eq, Ord, Read, Show)--_Annotation = Core.Name "hydra.java.syntax.Annotation"--_Annotation_normal = Core.Name "normal"--_Annotation_marker = Core.Name "marker"--_Annotation_singleElement = Core.Name "singleElement"--data NormalAnnotation =-  NormalAnnotation {-    normalAnnotationTypeName :: TypeName,-    normalAnnotationPairs :: [ElementValuePair]}-  deriving (Eq, Ord, Read, Show)--_NormalAnnotation = Core.Name "hydra.java.syntax.NormalAnnotation"--_NormalAnnotation_typeName = Core.Name "typeName"--_NormalAnnotation_pairs = Core.Name "pairs"--data ElementValuePair =-  ElementValuePair {-    elementValuePairKey :: Identifier,-    elementValuePairValue :: ElementValue}-  deriving (Eq, Ord, Read, Show)--_ElementValuePair = Core.Name "hydra.java.syntax.ElementValuePair"--_ElementValuePair_key = Core.Name "key"--_ElementValuePair_value = Core.Name "value"--data ElementValue =-  ElementValueConditionalExpression ConditionalExpression |-  ElementValueElementValueArrayInitializer ElementValueArrayInitializer |-  ElementValueAnnotation Annotation-  deriving (Eq, Ord, Read, Show)--_ElementValue = Core.Name "hydra.java.syntax.ElementValue"--_ElementValue_conditionalExpression = Core.Name "conditionalExpression"--_ElementValue_elementValueArrayInitializer = Core.Name "elementValueArrayInitializer"--_ElementValue_annotation = Core.Name "annotation"--newtype ElementValueArrayInitializer =-  ElementValueArrayInitializer {-    unElementValueArrayInitializer :: [ElementValue]}-  deriving (Eq, Ord, Read, Show)--_ElementValueArrayInitializer = Core.Name "hydra.java.syntax.ElementValueArrayInitializer"--newtype MarkerAnnotation =-  MarkerAnnotation {-    unMarkerAnnotation :: TypeName}-  deriving (Eq, Ord, Read, Show)--_MarkerAnnotation = Core.Name "hydra.java.syntax.MarkerAnnotation"--data SingleElementAnnotation =-  SingleElementAnnotation {-    singleElementAnnotationName :: TypeName,-    singleElementAnnotationValue :: (Maybe ElementValue)}-  deriving (Eq, Ord, Read, Show)--_SingleElementAnnotation = Core.Name "hydra.java.syntax.SingleElementAnnotation"--_SingleElementAnnotation_name = Core.Name "name"--_SingleElementAnnotation_value = Core.Name "value"--newtype ArrayInitializer =-  ArrayInitializer {-    unArrayInitializer :: [[VariableInitializer]]}-  deriving (Eq, Ord, Read, Show)--_ArrayInitializer = Core.Name "hydra.java.syntax.ArrayInitializer"--newtype Block =-  Block {-    unBlock :: [BlockStatement]}-  deriving (Eq, Ord, Read, Show)--_Block = Core.Name "hydra.java.syntax.Block"--data BlockStatement =-  BlockStatementLocalVariableDeclaration LocalVariableDeclarationStatement |-  BlockStatementLocalClassOrInterface LocalClassOrInterfaceDeclaration |-  BlockStatementStatement Statement-  deriving (Eq, Ord, Read, Show)--_BlockStatement = Core.Name "hydra.java.syntax.BlockStatement"--_BlockStatement_localVariableDeclaration = Core.Name "localVariableDeclaration"--_BlockStatement_localClassOrInterface = Core.Name "localClassOrInterface"--_BlockStatement_statement = Core.Name "statement"--data LocalClassOrInterfaceDeclaration =-  LocalClassOrInterfaceDeclarationClass ClassDeclaration |-  LocalClassOrInterfaceDeclarationNormalInterface NormalInterfaceDeclaration-  deriving (Eq, Ord, Read, Show)--_LocalClassOrInterfaceDeclaration = Core.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"--_LocalClassOrInterfaceDeclaration_class = Core.Name "class"--_LocalClassOrInterfaceDeclaration_normalInterface = Core.Name "normalInterface"--newtype LocalVariableDeclarationStatement =-  LocalVariableDeclarationStatement {-    unLocalVariableDeclarationStatement :: LocalVariableDeclaration}-  deriving (Eq, Ord, Read, Show)--_LocalVariableDeclarationStatement = Core.Name "hydra.java.syntax.LocalVariableDeclarationStatement"--data LocalVariableDeclaration =-  LocalVariableDeclaration {-    localVariableDeclarationModifiers :: [VariableModifier],-    localVariableDeclarationType :: LocalVariableType,-    localVariableDeclarationDeclarators :: [VariableDeclarator]}-  deriving (Eq, Ord, Read, Show)--_LocalVariableDeclaration = Core.Name "hydra.java.syntax.LocalVariableDeclaration"--_LocalVariableDeclaration_modifiers = Core.Name "modifiers"--_LocalVariableDeclaration_type = Core.Name "type"--_LocalVariableDeclaration_declarators = Core.Name "declarators"--data LocalVariableType =-  LocalVariableTypeType UnannType |-  LocalVariableTypeVar-  deriving (Eq, Ord, Read, Show)--_LocalVariableType = Core.Name "hydra.java.syntax.LocalVariableType"--_LocalVariableType_type = Core.Name "type"--_LocalVariableType_var = Core.Name "var"--data Statement =-  StatementWithoutTrailing StatementWithoutTrailingSubstatement |-  StatementLabeled LabeledStatement |-  StatementIfThen IfThenStatement |-  StatementIfThenElse IfThenElseStatement |-  StatementWhile WhileStatement |-  StatementFor ForStatement-  deriving (Eq, Ord, Read, Show)--_Statement = Core.Name "hydra.java.syntax.Statement"--_Statement_withoutTrailing = Core.Name "withoutTrailing"--_Statement_labeled = Core.Name "labeled"--_Statement_ifThen = Core.Name "ifThen"--_Statement_ifThenElse = Core.Name "ifThenElse"--_Statement_while = Core.Name "while"--_Statement_for = Core.Name "for"--data StatementNoShortIf =-  StatementNoShortIfWithoutTrailing StatementWithoutTrailingSubstatement |-  StatementNoShortIfLabeled LabeledStatementNoShortIf |-  StatementNoShortIfIfThenElse IfThenElseStatementNoShortIf |-  StatementNoShortIfWhile WhileStatementNoShortIf |-  StatementNoShortIfFor ForStatementNoShortIf-  deriving (Eq, Ord, Read, Show)--_StatementNoShortIf = Core.Name "hydra.java.syntax.StatementNoShortIf"--_StatementNoShortIf_withoutTrailing = Core.Name "withoutTrailing"--_StatementNoShortIf_labeled = Core.Name "labeled"--_StatementNoShortIf_ifThenElse = Core.Name "ifThenElse"--_StatementNoShortIf_while = Core.Name "while"--_StatementNoShortIf_for = Core.Name "for"--data StatementWithoutTrailingSubstatement =-  StatementWithoutTrailingSubstatementBlock Block |-  StatementWithoutTrailingSubstatementEmpty |-  StatementWithoutTrailingSubstatementExpression ExpressionStatement |-  StatementWithoutTrailingSubstatementAssert AssertStatement |-  StatementWithoutTrailingSubstatementSwitch SwitchStatement |-  StatementWithoutTrailingSubstatementDo DoStatement |-  StatementWithoutTrailingSubstatementBreak BreakStatement |-  StatementWithoutTrailingSubstatementContinue ContinueStatement |-  StatementWithoutTrailingSubstatementReturn ReturnStatement |-  StatementWithoutTrailingSubstatementSynchronized SynchronizedStatement |-  StatementWithoutTrailingSubstatementThrow ThrowStatement |-  StatementWithoutTrailingSubstatementTry TryStatement |-  StatementWithoutTrailingSubstatementYield YieldStatement-  deriving (Eq, Ord, Read, Show)--_StatementWithoutTrailingSubstatement = Core.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"--_StatementWithoutTrailingSubstatement_block = Core.Name "block"--_StatementWithoutTrailingSubstatement_empty = Core.Name "empty"--_StatementWithoutTrailingSubstatement_expression = Core.Name "expression"--_StatementWithoutTrailingSubstatement_assert = Core.Name "assert"--_StatementWithoutTrailingSubstatement_switch = Core.Name "switch"--_StatementWithoutTrailingSubstatement_do = Core.Name "do"--_StatementWithoutTrailingSubstatement_break = Core.Name "break"--_StatementWithoutTrailingSubstatement_continue = Core.Name "continue"--_StatementWithoutTrailingSubstatement_return = Core.Name "return"--_StatementWithoutTrailingSubstatement_synchronized = Core.Name "synchronized"--_StatementWithoutTrailingSubstatement_throw = Core.Name "throw"--_StatementWithoutTrailingSubstatement_try = Core.Name "try"--_StatementWithoutTrailingSubstatement_yield = Core.Name "yield"--data LabeledStatement =-  LabeledStatement {-    labeledStatementIdentifier :: Identifier,-    labeledStatementStatement :: Statement}-  deriving (Eq, Ord, Read, Show)--_LabeledStatement = Core.Name "hydra.java.syntax.LabeledStatement"--_LabeledStatement_identifier = Core.Name "identifier"--_LabeledStatement_statement = Core.Name "statement"--data LabeledStatementNoShortIf =-  LabeledStatementNoShortIf {-    labeledStatementNoShortIfIdentifier :: Identifier,-    labeledStatementNoShortIfStatement :: StatementNoShortIf}-  deriving (Eq, Ord, Read, Show)--_LabeledStatementNoShortIf = Core.Name "hydra.java.syntax.LabeledStatementNoShortIf"--_LabeledStatementNoShortIf_identifier = Core.Name "identifier"--_LabeledStatementNoShortIf_statement = Core.Name "statement"--newtype ExpressionStatement =-  ExpressionStatement {-    unExpressionStatement :: StatementExpression}-  deriving (Eq, Ord, Read, Show)--_ExpressionStatement = Core.Name "hydra.java.syntax.ExpressionStatement"--data StatementExpression =-  StatementExpressionAssignment Assignment |-  StatementExpressionPreIncrement PreIncrementExpression |-  StatementExpressionPreDecrement PreDecrementExpression |-  StatementExpressionPostIncrement PostIncrementExpression |-  StatementExpressionPostDecrement PostDecrementExpression |-  StatementExpressionMethodInvocation MethodInvocation |-  StatementExpressionClassInstanceCreation ClassInstanceCreationExpression-  deriving (Eq, Ord, Read, Show)--_StatementExpression = Core.Name "hydra.java.syntax.StatementExpression"--_StatementExpression_assignment = Core.Name "assignment"--_StatementExpression_preIncrement = Core.Name "preIncrement"--_StatementExpression_preDecrement = Core.Name "preDecrement"--_StatementExpression_postIncrement = Core.Name "postIncrement"--_StatementExpression_postDecrement = Core.Name "postDecrement"--_StatementExpression_methodInvocation = Core.Name "methodInvocation"--_StatementExpression_classInstanceCreation = Core.Name "classInstanceCreation"--data IfThenStatement =-  IfThenStatement {-    ifThenStatementExpression :: Expression,-    ifThenStatementStatement :: Statement}-  deriving (Eq, Ord, Read, Show)--_IfThenStatement = Core.Name "hydra.java.syntax.IfThenStatement"--_IfThenStatement_expression = Core.Name "expression"--_IfThenStatement_statement = Core.Name "statement"--data IfThenElseStatement =-  IfThenElseStatement {-    ifThenElseStatementCond :: (Maybe Expression),-    ifThenElseStatementThen :: StatementNoShortIf,-    ifThenElseStatementElse :: Statement}-  deriving (Eq, Ord, Read, Show)--_IfThenElseStatement = Core.Name "hydra.java.syntax.IfThenElseStatement"--_IfThenElseStatement_cond = Core.Name "cond"--_IfThenElseStatement_then = Core.Name "then"--_IfThenElseStatement_else = Core.Name "else"--data IfThenElseStatementNoShortIf =-  IfThenElseStatementNoShortIf {-    ifThenElseStatementNoShortIfCond :: (Maybe Expression),-    ifThenElseStatementNoShortIfThen :: StatementNoShortIf,-    ifThenElseStatementNoShortIfElse :: StatementNoShortIf}-  deriving (Eq, Ord, Read, Show)--_IfThenElseStatementNoShortIf = Core.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"--_IfThenElseStatementNoShortIf_cond = Core.Name "cond"--_IfThenElseStatementNoShortIf_then = Core.Name "then"--_IfThenElseStatementNoShortIf_else = Core.Name "else"--data AssertStatement =-  AssertStatementSingle Expression |-  AssertStatementPair AssertStatement_Pair-  deriving (Eq, Ord, Read, Show)--_AssertStatement = Core.Name "hydra.java.syntax.AssertStatement"--_AssertStatement_single = Core.Name "single"--_AssertStatement_pair = Core.Name "pair"--data AssertStatement_Pair =-  AssertStatement_Pair {-    assertStatement_PairFirst :: Expression,-    assertStatement_PairSecond :: Expression}-  deriving (Eq, Ord, Read, Show)--_AssertStatement_Pair = Core.Name "hydra.java.syntax.AssertStatement_Pair"--_AssertStatement_Pair_first = Core.Name "first"--_AssertStatement_Pair_second = Core.Name "second"--data SwitchStatement =-  SwitchStatement {-    switchStatementCond :: Expression,-    switchStatementBlock :: SwitchBlock}-  deriving (Eq, Ord, Read, Show)--_SwitchStatement = Core.Name "hydra.java.syntax.SwitchStatement"--_SwitchStatement_cond = Core.Name "cond"--_SwitchStatement_block = Core.Name "block"--data SwitchBlock =-  SwitchBlockRules [SwitchRule] |-  SwitchBlockLegacy SwitchBlock_Legacy-  deriving (Eq, Ord, Read, Show)--_SwitchBlock = Core.Name "hydra.java.syntax.SwitchBlock"--_SwitchBlock_rules = Core.Name "rules"--_SwitchBlock_legacy = Core.Name "legacy"--data SwitchBlock_Legacy =-  SwitchBlock_Legacy {-    switchBlock_LegacyGroups :: [SwitchBlockStatementGroup],-    switchBlock_LegacyTrailingLabels :: [SwitchLabel]}-  deriving (Eq, Ord, Read, Show)--_SwitchBlock_Legacy = Core.Name "hydra.java.syntax.SwitchBlock_Legacy"--_SwitchBlock_Legacy_groups = Core.Name "groups"--_SwitchBlock_Legacy_trailingLabels = Core.Name "trailingLabels"--data SwitchRule =-  SwitchRule {-    switchRuleLabel :: SwitchLabel,-    switchRuleBody :: SwitchRule_Body}-  deriving (Eq, Ord, Read, Show)--_SwitchRule = Core.Name "hydra.java.syntax.SwitchRule"--_SwitchRule_label = Core.Name "label"--_SwitchRule_body = Core.Name "body"--data SwitchRule_Body =-  SwitchRule_BodyExpression Expression |-  SwitchRule_BodyBlock Block |-  SwitchRule_BodyThrow ThrowStatement-  deriving (Eq, Ord, Read, Show)--_SwitchRule_Body = Core.Name "hydra.java.syntax.SwitchRule_Body"--_SwitchRule_Body_expression = Core.Name "expression"--_SwitchRule_Body_block = Core.Name "block"--_SwitchRule_Body_throw = Core.Name "throw"--data SwitchBlockStatementGroup =-  SwitchBlockStatementGroup {-    switchBlockStatementGroupLabels :: [SwitchLabel],-    switchBlockStatementGroupStatements :: [BlockStatement]}-  deriving (Eq, Ord, Read, Show)--_SwitchBlockStatementGroup = Core.Name "hydra.java.syntax.SwitchBlockStatementGroup"--_SwitchBlockStatementGroup_labels = Core.Name "labels"--_SwitchBlockStatementGroup_statements = Core.Name "statements"--data SwitchLabel =-  SwitchLabelCase [CaseConstant] |-  SwitchLabelNull Bool |-  SwitchLabelCasePattern CasePattern |-  SwitchLabelDefault-  deriving (Eq, Ord, Read, Show)--_SwitchLabel = Core.Name "hydra.java.syntax.SwitchLabel"--_SwitchLabel_case = Core.Name "case"--_SwitchLabel_null = Core.Name "null"--_SwitchLabel_casePattern = Core.Name "casePattern"--_SwitchLabel_default = Core.Name "default"--newtype CaseConstant =-  CaseConstant {-    unCaseConstant :: ConditionalExpression}-  deriving (Eq, Ord, Read, Show)--_CaseConstant = Core.Name "hydra.java.syntax.CaseConstant"--data CasePattern =-  CasePattern {-    casePatternPattern :: Pattern,-    casePatternGuard :: (Maybe Guard)}-  deriving (Eq, Ord, Read, Show)--_CasePattern = Core.Name "hydra.java.syntax.CasePattern"--_CasePattern_pattern = Core.Name "pattern"--_CasePattern_guard = Core.Name "guard"--newtype Guard =-  Guard {-    unGuard :: Expression}-  deriving (Eq, Ord, Read, Show)--_Guard = Core.Name "hydra.java.syntax.Guard"--data Pattern =-  PatternType TypePattern |-  PatternRecord RecordPattern-  deriving (Eq, Ord, Read, Show)--_Pattern = Core.Name "hydra.java.syntax.Pattern"--_Pattern_type = Core.Name "type"--_Pattern_record = Core.Name "record"--newtype TypePattern =-  TypePattern {-    unTypePattern :: LocalVariableDeclaration}-  deriving (Eq, Ord, Read, Show)--_TypePattern = Core.Name "hydra.java.syntax.TypePattern"--data RecordPattern =-  RecordPattern {-    recordPatternType :: ReferenceType,-    recordPatternPatterns :: [Pattern]}-  deriving (Eq, Ord, Read, Show)--_RecordPattern = Core.Name "hydra.java.syntax.RecordPattern"--_RecordPattern_type = Core.Name "type"--_RecordPattern_patterns = Core.Name "patterns"--data WhileStatement =-  WhileStatement {-    whileStatementCond :: (Maybe Expression),-    whileStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_WhileStatement = Core.Name "hydra.java.syntax.WhileStatement"--_WhileStatement_cond = Core.Name "cond"--_WhileStatement_body = Core.Name "body"--data WhileStatementNoShortIf =-  WhileStatementNoShortIf {-    whileStatementNoShortIfCond :: (Maybe Expression),-    whileStatementNoShortIfBody :: StatementNoShortIf}-  deriving (Eq, Ord, Read, Show)--_WhileStatementNoShortIf = Core.Name "hydra.java.syntax.WhileStatementNoShortIf"--_WhileStatementNoShortIf_cond = Core.Name "cond"--_WhileStatementNoShortIf_body = Core.Name "body"--data DoStatement =-  DoStatement {-    doStatementBody :: Statement,-    doStatementCond :: Expression}-  deriving (Eq, Ord, Read, Show)--_DoStatement = Core.Name "hydra.java.syntax.DoStatement"--_DoStatement_body = Core.Name "body"--_DoStatement_cond = Core.Name "cond"--data ForStatement =-  ForStatementBasic BasicForStatement |-  ForStatementEnhanced EnhancedForStatement-  deriving (Eq, Ord, Read, Show)--_ForStatement = Core.Name "hydra.java.syntax.ForStatement"--_ForStatement_basic = Core.Name "basic"--_ForStatement_enhanced = Core.Name "enhanced"--data ForStatementNoShortIf =-  ForStatementNoShortIfBasic BasicForStatementNoShortIf |-  ForStatementNoShortIfEnhanced EnhancedForStatementNoShortIf-  deriving (Eq, Ord, Read, Show)--_ForStatementNoShortIf = Core.Name "hydra.java.syntax.ForStatementNoShortIf"--_ForStatementNoShortIf_basic = Core.Name "basic"--_ForStatementNoShortIf_enhanced = Core.Name "enhanced"--data BasicForStatement =-  BasicForStatement {-    basicForStatementCond :: ForCond,-    basicForStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_BasicForStatement = Core.Name "hydra.java.syntax.BasicForStatement"--_BasicForStatement_cond = Core.Name "cond"--_BasicForStatement_body = Core.Name "body"--data ForCond =-  ForCond {-    forCondInit :: (Maybe ForInit),-    forCondCond :: (Maybe Expression),-    forCondUpdate :: (Maybe ForUpdate)}-  deriving (Eq, Ord, Read, Show)--_ForCond = Core.Name "hydra.java.syntax.ForCond"--_ForCond_init = Core.Name "init"--_ForCond_cond = Core.Name "cond"--_ForCond_update = Core.Name "update"--data BasicForStatementNoShortIf =-  BasicForStatementNoShortIf {-    basicForStatementNoShortIfCond :: ForCond,-    basicForStatementNoShortIfBody :: StatementNoShortIf}-  deriving (Eq, Ord, Read, Show)--_BasicForStatementNoShortIf = Core.Name "hydra.java.syntax.BasicForStatementNoShortIf"--_BasicForStatementNoShortIf_cond = Core.Name "cond"--_BasicForStatementNoShortIf_body = Core.Name "body"--data ForInit =-  ForInitStatements [StatementExpression] |-  ForInitLocalVariable LocalVariableDeclaration-  deriving (Eq, Ord, Read, Show)--_ForInit = Core.Name "hydra.java.syntax.ForInit"--_ForInit_statements = Core.Name "statements"--_ForInit_localVariable = Core.Name "localVariable"--newtype ForUpdate =-  ForUpdate {-    unForUpdate :: [StatementExpression]}-  deriving (Eq, Ord, Read, Show)--_ForUpdate = Core.Name "hydra.java.syntax.ForUpdate"--data EnhancedForStatement =-  EnhancedForStatement {-    enhancedForStatementCond :: EnhancedForCond,-    enhancedForStatementBody :: Statement}-  deriving (Eq, Ord, Read, Show)--_EnhancedForStatement = Core.Name "hydra.java.syntax.EnhancedForStatement"--_EnhancedForStatement_cond = Core.Name "cond"--_EnhancedForStatement_body = Core.Name "body"--data EnhancedForCond =-  EnhancedForCond {-    enhancedForCondDeclaration :: LocalVariableDeclaration,-    enhancedForCondExpression :: Expression}-  deriving (Eq, Ord, Read, Show)--_EnhancedForCond = Core.Name "hydra.java.syntax.EnhancedForCond"--_EnhancedForCond_declaration = Core.Name "declaration"--_EnhancedForCond_expression = Core.Name "expression"--data EnhancedForStatementNoShortIf =-  EnhancedForStatementNoShortIf {-    enhancedForStatementNoShortIfCond :: EnhancedForCond,-    enhancedForStatementNoShortIfBody :: StatementNoShortIf}-  deriving (Eq, Ord, Read, Show)--_EnhancedForStatementNoShortIf = Core.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"--_EnhancedForStatementNoShortIf_cond = Core.Name "cond"--_EnhancedForStatementNoShortIf_body = Core.Name "body"--newtype BreakStatement =-  BreakStatement {-    unBreakStatement :: (Maybe Identifier)}-  deriving (Eq, Ord, Read, Show)--_BreakStatement = Core.Name "hydra.java.syntax.BreakStatement"--newtype YieldStatement =-  YieldStatement {-    unYieldStatement :: Expression}-  deriving (Eq, Ord, Read, Show)--_YieldStatement = Core.Name "hydra.java.syntax.YieldStatement"--newtype ContinueStatement =-  ContinueStatement {-    unContinueStatement :: (Maybe Identifier)}-  deriving (Eq, Ord, Read, Show)--_ContinueStatement = Core.Name "hydra.java.syntax.ContinueStatement"--newtype ReturnStatement =-  ReturnStatement {-    unReturnStatement :: (Maybe Expression)}-  deriving (Eq, Ord, Read, Show)--_ReturnStatement = Core.Name "hydra.java.syntax.ReturnStatement"--newtype ThrowStatement =-  ThrowStatement {-    unThrowStatement :: Expression}-  deriving (Eq, Ord, Read, Show)--_ThrowStatement = Core.Name "hydra.java.syntax.ThrowStatement"--data SynchronizedStatement =-  SynchronizedStatement {-    synchronizedStatementExpression :: Expression,-    synchronizedStatementBlock :: Block}-  deriving (Eq, Ord, Read, Show)--_SynchronizedStatement = Core.Name "hydra.java.syntax.SynchronizedStatement"--_SynchronizedStatement_expression = Core.Name "expression"--_SynchronizedStatement_block = Core.Name "block"--data TryStatement =-  TryStatementSimple TryStatement_Simple |-  TryStatementWithFinally TryStatement_WithFinally |-  TryStatementWithResources TryWithResourcesStatement-  deriving (Eq, Ord, Read, Show)--_TryStatement = Core.Name "hydra.java.syntax.TryStatement"--_TryStatement_simple = Core.Name "simple"--_TryStatement_withFinally = Core.Name "withFinally"--_TryStatement_withResources = Core.Name "withResources"--data TryStatement_Simple =-  TryStatement_Simple {-    tryStatement_SimpleBlock :: Block,-    tryStatement_SimpleCatches :: Catches}-  deriving (Eq, Ord, Read, Show)--_TryStatement_Simple = Core.Name "hydra.java.syntax.TryStatement_Simple"--_TryStatement_Simple_block = Core.Name "block"--_TryStatement_Simple_catches = Core.Name "catches"--data TryStatement_WithFinally =-  TryStatement_WithFinally {-    tryStatement_WithFinallyBlock :: Block,-    tryStatement_WithFinallyCatches :: (Maybe Catches),-    tryStatement_WithFinallyFinally :: Finally}-  deriving (Eq, Ord, Read, Show)--_TryStatement_WithFinally = Core.Name "hydra.java.syntax.TryStatement_WithFinally"--_TryStatement_WithFinally_block = Core.Name "block"--_TryStatement_WithFinally_catches = Core.Name "catches"--_TryStatement_WithFinally_finally = Core.Name "finally"--newtype Catches =-  Catches {-    unCatches :: [CatchClause]}-  deriving (Eq, Ord, Read, Show)--_Catches = Core.Name "hydra.java.syntax.Catches"--data CatchClause =-  CatchClause {-    catchClauseParameter :: (Maybe CatchFormalParameter),-    catchClauseBlock :: Block}-  deriving (Eq, Ord, Read, Show)--_CatchClause = Core.Name "hydra.java.syntax.CatchClause"--_CatchClause_parameter = Core.Name "parameter"--_CatchClause_block = Core.Name "block"--data CatchFormalParameter =-  CatchFormalParameter {-    catchFormalParameterModifiers :: [VariableModifier],-    catchFormalParameterType :: CatchType,-    catchFormalParameterId :: VariableDeclaratorId}-  deriving (Eq, Ord, Read, Show)--_CatchFormalParameter = Core.Name "hydra.java.syntax.CatchFormalParameter"--_CatchFormalParameter_modifiers = Core.Name "modifiers"--_CatchFormalParameter_type = Core.Name "type"--_CatchFormalParameter_id = Core.Name "id"--data CatchType =-  CatchType {-    catchTypeType :: UnannClassType,-    catchTypeTypes :: [ClassType]}-  deriving (Eq, Ord, Read, Show)--_CatchType = Core.Name "hydra.java.syntax.CatchType"--_CatchType_type = Core.Name "type"--_CatchType_types = Core.Name "types"--newtype Finally =-  Finally {-    unFinally :: Block}-  deriving (Eq, Ord, Read, Show)--_Finally = Core.Name "hydra.java.syntax.Finally"--data TryWithResourcesStatement =-  TryWithResourcesStatement {-    tryWithResourcesStatementResourceSpecification :: ResourceSpecification,-    tryWithResourcesStatementBlock :: Block,-    tryWithResourcesStatementCatches :: (Maybe Catches),-    tryWithResourcesStatementFinally :: (Maybe Finally)}-  deriving (Eq, Ord, Read, Show)--_TryWithResourcesStatement = Core.Name "hydra.java.syntax.TryWithResourcesStatement"--_TryWithResourcesStatement_resourceSpecification = Core.Name "resourceSpecification"--_TryWithResourcesStatement_block = Core.Name "block"--_TryWithResourcesStatement_catches = Core.Name "catches"--_TryWithResourcesStatement_finally = Core.Name "finally"--newtype ResourceSpecification =-  ResourceSpecification {-    unResourceSpecification :: [Resource]}-  deriving (Eq, Ord, Read, Show)--_ResourceSpecification = Core.Name "hydra.java.syntax.ResourceSpecification"--data Resource =-  ResourceLocal Resource_Local |-  ResourceVariable VariableAccess-  deriving (Eq, Ord, Read, Show)--_Resource = Core.Name "hydra.java.syntax.Resource"--_Resource_local = Core.Name "local"--_Resource_variable = Core.Name "variable"--data Resource_Local =-  Resource_Local {-    resource_LocalModifiers :: [VariableModifier],-    resource_LocalType :: LocalVariableType,-    resource_LocalIdentifier :: Identifier,-    resource_LocalExpression :: Expression}-  deriving (Eq, Ord, Read, Show)--_Resource_Local = Core.Name "hydra.java.syntax.Resource_Local"--_Resource_Local_modifiers = Core.Name "modifiers"--_Resource_Local_type = Core.Name "type"--_Resource_Local_identifier = Core.Name "identifier"--_Resource_Local_expression = Core.Name "expression"--data VariableAccess =-  VariableAccessExpressionName ExpressionName |-  VariableAccessFieldAccess FieldAccess-  deriving (Eq, Ord, Read, Show)--_VariableAccess = Core.Name "hydra.java.syntax.VariableAccess"--_VariableAccess_expressionName = Core.Name "expressionName"--_VariableAccess_fieldAccess = Core.Name "fieldAccess"--data Primary =-  PrimaryNoNewArray PrimaryNoNewArrayExpression |-  PrimaryArrayCreation ArrayCreationExpression-  deriving (Eq, Ord, Read, Show)--_Primary = Core.Name "hydra.java.syntax.Primary"--_Primary_noNewArray = Core.Name "noNewArray"--_Primary_arrayCreation = Core.Name "arrayCreation"--data PrimaryNoNewArrayExpression =-  PrimaryNoNewArrayExpressionLiteral Literal |-  PrimaryNoNewArrayExpressionClassLiteral ClassLiteral |-  PrimaryNoNewArrayExpressionThis |-  PrimaryNoNewArrayExpressionDotThis TypeName |-  PrimaryNoNewArrayExpressionParens Expression |-  PrimaryNoNewArrayExpressionClassInstance ClassInstanceCreationExpression |-  PrimaryNoNewArrayExpressionFieldAccess FieldAccess |-  PrimaryNoNewArrayExpressionArrayAccess ArrayAccess |-  PrimaryNoNewArrayExpressionMethodInvocation MethodInvocation |-  PrimaryNoNewArrayExpressionMethodReference MethodReference-  deriving (Eq, Ord, Read, Show)--_PrimaryNoNewArrayExpression = Core.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"--_PrimaryNoNewArrayExpression_literal = Core.Name "literal"--_PrimaryNoNewArrayExpression_classLiteral = Core.Name "classLiteral"--_PrimaryNoNewArrayExpression_this = Core.Name "this"--_PrimaryNoNewArrayExpression_dotThis = Core.Name "dotThis"--_PrimaryNoNewArrayExpression_parens = Core.Name "parens"--_PrimaryNoNewArrayExpression_classInstance = Core.Name "classInstance"--_PrimaryNoNewArrayExpression_fieldAccess = Core.Name "fieldAccess"--_PrimaryNoNewArrayExpression_arrayAccess = Core.Name "arrayAccess"--_PrimaryNoNewArrayExpression_methodInvocation = Core.Name "methodInvocation"--_PrimaryNoNewArrayExpression_methodReference = Core.Name "methodReference"--data ClassLiteral =-  ClassLiteralType TypeNameArray |-  ClassLiteralNumericType NumericTypeArray |-  ClassLiteralBoolean BooleanArray |-  ClassLiteralVoid-  deriving (Eq, Ord, Read, Show)--_ClassLiteral = Core.Name "hydra.java.syntax.ClassLiteral"--_ClassLiteral_type = Core.Name "type"--_ClassLiteral_numericType = Core.Name "numericType"--_ClassLiteral_boolean = Core.Name "boolean"--_ClassLiteral_void = Core.Name "void"--data TypeNameArray =-  TypeNameArraySimple TypeName |-  TypeNameArrayArray TypeNameArray-  deriving (Eq, Ord, Read, Show)--_TypeNameArray = Core.Name "hydra.java.syntax.TypeNameArray"--_TypeNameArray_simple = Core.Name "simple"--_TypeNameArray_array = Core.Name "array"--data NumericTypeArray =-  NumericTypeArraySimple NumericType |-  NumericTypeArrayArray NumericTypeArray-  deriving (Eq, Ord, Read, Show)--_NumericTypeArray = Core.Name "hydra.java.syntax.NumericTypeArray"--_NumericTypeArray_simple = Core.Name "simple"--_NumericTypeArray_array = Core.Name "array"--data BooleanArray =-  BooleanArraySimple |-  BooleanArrayArray BooleanArray-  deriving (Eq, Ord, Read, Show)--_BooleanArray = Core.Name "hydra.java.syntax.BooleanArray"--_BooleanArray_simple = Core.Name "simple"--_BooleanArray_array = Core.Name "array"--data ClassInstanceCreationExpression =-  ClassInstanceCreationExpression {-    classInstanceCreationExpressionQualifier :: (Maybe ClassInstanceCreationExpression_Qualifier),-    classInstanceCreationExpressionExpression :: UnqualifiedClassInstanceCreationExpression}-  deriving (Eq, Ord, Read, Show)--_ClassInstanceCreationExpression = Core.Name "hydra.java.syntax.ClassInstanceCreationExpression"--_ClassInstanceCreationExpression_qualifier = Core.Name "qualifier"--_ClassInstanceCreationExpression_expression = Core.Name "expression"--data ClassInstanceCreationExpression_Qualifier =-  ClassInstanceCreationExpression_QualifierExpression ExpressionName |-  ClassInstanceCreationExpression_QualifierPrimary Primary-  deriving (Eq, Ord, Read, Show)--_ClassInstanceCreationExpression_Qualifier = Core.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"--_ClassInstanceCreationExpression_Qualifier_expression = Core.Name "expression"--_ClassInstanceCreationExpression_Qualifier_primary = Core.Name "primary"--data UnqualifiedClassInstanceCreationExpression =-  UnqualifiedClassInstanceCreationExpression {-    unqualifiedClassInstanceCreationExpressionTypeArguments :: [TypeArgument],-    unqualifiedClassInstanceCreationExpressionClassOrInterface :: ClassOrInterfaceTypeToInstantiate,-    unqualifiedClassInstanceCreationExpressionArguments :: [Expression],-    unqualifiedClassInstanceCreationExpressionBody :: (Maybe ClassBody)}-  deriving (Eq, Ord, Read, Show)--_UnqualifiedClassInstanceCreationExpression = Core.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"--_UnqualifiedClassInstanceCreationExpression_typeArguments = Core.Name "typeArguments"--_UnqualifiedClassInstanceCreationExpression_classOrInterface = Core.Name "classOrInterface"--_UnqualifiedClassInstanceCreationExpression_arguments = Core.Name "arguments"--_UnqualifiedClassInstanceCreationExpression_body = Core.Name "body"--data ClassOrInterfaceTypeToInstantiate =-  ClassOrInterfaceTypeToInstantiate {-    classOrInterfaceTypeToInstantiateIdentifiers :: [AnnotatedIdentifier],-    classOrInterfaceTypeToInstantiateTypeArguments :: (Maybe TypeArgumentsOrDiamond)}-  deriving (Eq, Ord, Read, Show)--_ClassOrInterfaceTypeToInstantiate = Core.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"--_ClassOrInterfaceTypeToInstantiate_identifiers = Core.Name "identifiers"--_ClassOrInterfaceTypeToInstantiate_typeArguments = Core.Name "typeArguments"--data AnnotatedIdentifier =-  AnnotatedIdentifier {-    annotatedIdentifierAnnotations :: [Annotation],-    annotatedIdentifierIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_AnnotatedIdentifier = Core.Name "hydra.java.syntax.AnnotatedIdentifier"--_AnnotatedIdentifier_annotations = Core.Name "annotations"--_AnnotatedIdentifier_identifier = Core.Name "identifier"--data TypeArgumentsOrDiamond =-  TypeArgumentsOrDiamondArguments [TypeArgument] |-  TypeArgumentsOrDiamondDiamond-  deriving (Eq, Ord, Read, Show)--_TypeArgumentsOrDiamond = Core.Name "hydra.java.syntax.TypeArgumentsOrDiamond"--_TypeArgumentsOrDiamond_arguments = Core.Name "arguments"--_TypeArgumentsOrDiamond_diamond = Core.Name "diamond"--data FieldAccess =-  FieldAccess {-    fieldAccessQualifier :: FieldAccess_Qualifier,-    fieldAccessIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_FieldAccess = Core.Name "hydra.java.syntax.FieldAccess"--_FieldAccess_qualifier = Core.Name "qualifier"--_FieldAccess_identifier = Core.Name "identifier"--data FieldAccess_Qualifier =-  FieldAccess_QualifierPrimary Primary |-  FieldAccess_QualifierSuper |-  FieldAccess_QualifierTyped TypeName-  deriving (Eq, Ord, Read, Show)--_FieldAccess_Qualifier = Core.Name "hydra.java.syntax.FieldAccess_Qualifier"--_FieldAccess_Qualifier_primary = Core.Name "primary"--_FieldAccess_Qualifier_super = Core.Name "super"--_FieldAccess_Qualifier_typed = Core.Name "typed"--data ArrayAccess =-  ArrayAccess {-    arrayAccessExpression :: (Maybe Expression),-    arrayAccessVariant :: ArrayAccess_Variant}-  deriving (Eq, Ord, Read, Show)--_ArrayAccess = Core.Name "hydra.java.syntax.ArrayAccess"--_ArrayAccess_expression = Core.Name "expression"--_ArrayAccess_variant = Core.Name "variant"--data ArrayAccess_Variant =-  ArrayAccess_VariantName ExpressionName |-  ArrayAccess_VariantPrimary PrimaryNoNewArrayExpression |-  ArrayAccess_VariantArrayCreationWithInitializer ArrayCreationExpressionWithInitializer-  deriving (Eq, Ord, Read, Show)--_ArrayAccess_Variant = Core.Name "hydra.java.syntax.ArrayAccess_Variant"--_ArrayAccess_Variant_name = Core.Name "name"--_ArrayAccess_Variant_primary = Core.Name "primary"--_ArrayAccess_Variant_arrayCreationWithInitializer = Core.Name "arrayCreationWithInitializer"--data MethodInvocation =-  MethodInvocation {-    methodInvocationHeader :: MethodInvocation_Header,-    methodInvocationArguments :: [Expression]}-  deriving (Eq, Ord, Read, Show)--_MethodInvocation = Core.Name "hydra.java.syntax.MethodInvocation"--_MethodInvocation_header = Core.Name "header"--_MethodInvocation_arguments = Core.Name "arguments"--data MethodInvocation_Header =-  MethodInvocation_HeaderSimple MethodName |-  MethodInvocation_HeaderComplex MethodInvocation_Complex-  deriving (Eq, Ord, Read, Show)--_MethodInvocation_Header = Core.Name "hydra.java.syntax.MethodInvocation_Header"--_MethodInvocation_Header_simple = Core.Name "simple"--_MethodInvocation_Header_complex = Core.Name "complex"--data MethodInvocation_Complex =-  MethodInvocation_Complex {-    methodInvocation_ComplexVariant :: MethodInvocation_Variant,-    methodInvocation_ComplexTypeArguments :: [TypeArgument],-    methodInvocation_ComplexIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_MethodInvocation_Complex = Core.Name "hydra.java.syntax.MethodInvocation_Complex"--_MethodInvocation_Complex_variant = Core.Name "variant"--_MethodInvocation_Complex_typeArguments = Core.Name "typeArguments"--_MethodInvocation_Complex_identifier = Core.Name "identifier"--data MethodInvocation_Variant =-  MethodInvocation_VariantType TypeName |-  MethodInvocation_VariantExpression ExpressionName |-  MethodInvocation_VariantPrimary Primary |-  MethodInvocation_VariantSuper |-  MethodInvocation_VariantTypeSuper TypeName-  deriving (Eq, Ord, Read, Show)--_MethodInvocation_Variant = Core.Name "hydra.java.syntax.MethodInvocation_Variant"--_MethodInvocation_Variant_type = Core.Name "type"--_MethodInvocation_Variant_expression = Core.Name "expression"--_MethodInvocation_Variant_primary = Core.Name "primary"--_MethodInvocation_Variant_super = Core.Name "super"--_MethodInvocation_Variant_typeSuper = Core.Name "typeSuper"--data MethodReference =-  MethodReferenceExpression MethodReference_Expression |-  MethodReferencePrimary MethodReference_Primary |-  MethodReferenceReferenceType MethodReference_ReferenceType |-  MethodReferenceSuper MethodReference_Super |-  MethodReferenceNew MethodReference_New |-  MethodReferenceArray MethodReference_Array-  deriving (Eq, Ord, Read, Show)--_MethodReference = Core.Name "hydra.java.syntax.MethodReference"--_MethodReference_expression = Core.Name "expression"--_MethodReference_primary = Core.Name "primary"--_MethodReference_referenceType = Core.Name "referenceType"--_MethodReference_super = Core.Name "super"--_MethodReference_new = Core.Name "new"--_MethodReference_array = Core.Name "array"--data MethodReference_Expression =-  MethodReference_Expression {-    methodReference_ExpressionName :: ExpressionName,-    methodReference_ExpressionTypeArguments :: [TypeArgument],-    methodReference_ExpressionIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_MethodReference_Expression = Core.Name "hydra.java.syntax.MethodReference_Expression"--_MethodReference_Expression_name = Core.Name "name"--_MethodReference_Expression_typeArguments = Core.Name "typeArguments"--_MethodReference_Expression_identifier = Core.Name "identifier"--data MethodReference_Primary =-  MethodReference_Primary {-    methodReference_PrimaryPrimary :: Primary,-    methodReference_PrimaryTypeArguments :: [TypeArgument],-    methodReference_PrimaryIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_MethodReference_Primary = Core.Name "hydra.java.syntax.MethodReference_Primary"--_MethodReference_Primary_primary = Core.Name "primary"--_MethodReference_Primary_typeArguments = Core.Name "typeArguments"--_MethodReference_Primary_identifier = Core.Name "identifier"--data MethodReference_ReferenceType =-  MethodReference_ReferenceType {-    methodReference_ReferenceTypeReferenceType :: ReferenceType,-    methodReference_ReferenceTypeTypeArguments :: [TypeArgument],-    methodReference_ReferenceTypeIdentifier :: Identifier}-  deriving (Eq, Ord, Read, Show)--_MethodReference_ReferenceType = Core.Name "hydra.java.syntax.MethodReference_ReferenceType"--_MethodReference_ReferenceType_referenceType = Core.Name "referenceType"--_MethodReference_ReferenceType_typeArguments = Core.Name "typeArguments"--_MethodReference_ReferenceType_identifier = Core.Name "identifier"--data MethodReference_Super =-  MethodReference_Super {-    methodReference_SuperTypeArguments :: [TypeArgument],-    methodReference_SuperIdentifier :: Identifier,-    methodReference_SuperSuper :: Bool}-  deriving (Eq, Ord, Read, Show)--_MethodReference_Super = Core.Name "hydra.java.syntax.MethodReference_Super"--_MethodReference_Super_typeArguments = Core.Name "typeArguments"--_MethodReference_Super_identifier = Core.Name "identifier"--_MethodReference_Super_super = Core.Name "super"--data MethodReference_New =-  MethodReference_New {-    methodReference_NewClassType :: ClassType,-    methodReference_NewTypeArguments :: [TypeArgument]}-  deriving (Eq, Ord, Read, Show)--_MethodReference_New = Core.Name "hydra.java.syntax.MethodReference_New"--_MethodReference_New_classType = Core.Name "classType"--_MethodReference_New_typeArguments = Core.Name "typeArguments"--newtype MethodReference_Array =-  MethodReference_Array {-    unMethodReference_Array :: ArrayType}-  deriving (Eq, Ord, Read, Show)--_MethodReference_Array = Core.Name "hydra.java.syntax.MethodReference_Array"--data ArrayCreationExpression =-  ArrayCreationExpressionNoInit ArrayCreationExpressionWithoutInitializer |-  ArrayCreationExpressionWithInit ArrayCreationExpressionWithInitializer-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpression = Core.Name "hydra.java.syntax.ArrayCreationExpression"--_ArrayCreationExpression_noInit = Core.Name "noInit"--_ArrayCreationExpression_withInit = Core.Name "withInit"--data ArrayCreationExpressionWithoutInitializer =-  ArrayCreationExpressionWithoutInitializerPrimitive ArrayCreationExpressionWithoutInitializer_Primitive |-  ArrayCreationExpressionWithoutInitializerClassOrInterface ArrayCreationExpressionWithoutInitializer_ClassOrInterface-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithoutInitializer = Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"--_ArrayCreationExpressionWithoutInitializer_primitive = Core.Name "primitive"--_ArrayCreationExpressionWithoutInitializer_classOrInterface = Core.Name "classOrInterface"--data ArrayCreationExpressionWithoutInitializer_Primitive =-  ArrayCreationExpressionWithoutInitializer_Primitive {-    arrayCreationExpressionWithoutInitializer_PrimitiveType :: PrimitiveTypeWithAnnotations,-    arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: [DimExpr],-    arrayCreationExpressionWithoutInitializer_PrimitiveDims :: (Maybe Dims)}-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithoutInitializer_Primitive =-    Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"--_ArrayCreationExpressionWithoutInitializer_Primitive_type = Core.Name "type"--_ArrayCreationExpressionWithoutInitializer_Primitive_dimExprs = Core.Name "dimExprs"--_ArrayCreationExpressionWithoutInitializer_Primitive_dims = Core.Name "dims"--data ArrayCreationExpressionWithoutInitializer_ClassOrInterface =-  ArrayCreationExpressionWithoutInitializer_ClassOrInterface {-    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: ClassOrInterfaceType,-    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: [DimExpr],-    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: (Maybe Dims)}-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithoutInitializer_ClassOrInterface =-    Core.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"--_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_type = Core.Name "type"--_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_dimExprs = Core.Name "dimExprs"--_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_dims = Core.Name "dims"--data ArrayCreationExpressionWithInitializer =-  ArrayCreationExpressionWithInitializerPrimitive ArrayCreationExpressionWithInitializer_Primitive |-  ArrayCreationExpressionWithInitializerClassOrInterface ArrayCreationExpressionWithInitializer_ClassOrInterface-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithInitializer = Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"--_ArrayCreationExpressionWithInitializer_primitive = Core.Name "primitive"--_ArrayCreationExpressionWithInitializer_classOrInterface = Core.Name "classOrInterface"--data ArrayCreationExpressionWithInitializer_Primitive =-  ArrayCreationExpressionWithInitializer_Primitive {-    arrayCreationExpressionWithInitializer_PrimitiveType :: PrimitiveTypeWithAnnotations,-    arrayCreationExpressionWithInitializer_PrimitiveDims :: [Dims],-    arrayCreationExpressionWithInitializer_PrimitiveArray :: ArrayInitializer}-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithInitializer_Primitive =-    Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"--_ArrayCreationExpressionWithInitializer_Primitive_type = Core.Name "type"--_ArrayCreationExpressionWithInitializer_Primitive_dims = Core.Name "dims"--_ArrayCreationExpressionWithInitializer_Primitive_array = Core.Name "array"--data ArrayCreationExpressionWithInitializer_ClassOrInterface =-  ArrayCreationExpressionWithInitializer_ClassOrInterface {-    arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: ClassOrInterfaceType,-    arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: [Dims],-    arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: ArrayInitializer}-  deriving (Eq, Ord, Read, Show)--_ArrayCreationExpressionWithInitializer_ClassOrInterface =-    Core.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"--_ArrayCreationExpressionWithInitializer_ClassOrInterface_type = Core.Name "type"--_ArrayCreationExpressionWithInitializer_ClassOrInterface_dims = Core.Name "dims"--_ArrayCreationExpressionWithInitializer_ClassOrInterface_array = Core.Name "array"--data DimExpr =-  DimExpr {-    dimExprAnnotations :: [Annotation],-    dimExprExpression :: (Maybe Expression)}-  deriving (Eq, Ord, Read, Show)--_DimExpr = Core.Name "hydra.java.syntax.DimExpr"--_DimExpr_annotations = Core.Name "annotations"--_DimExpr_expression = Core.Name "expression"--data Expression =-  ExpressionLambda LambdaExpression |-  ExpressionAssignment AssignmentExpression-  deriving (Eq, Ord, Read, Show)--_Expression = Core.Name "hydra.java.syntax.Expression"--_Expression_lambda = Core.Name "lambda"--_Expression_assignment = Core.Name "assignment"--data LambdaExpression =-  LambdaExpression {-    lambdaExpressionParameters :: LambdaParameters,-    lambdaExpressionBody :: LambdaBody}-  deriving (Eq, Ord, Read, Show)--_LambdaExpression = Core.Name "hydra.java.syntax.LambdaExpression"--_LambdaExpression_parameters = Core.Name "parameters"--_LambdaExpression_body = Core.Name "body"--data LambdaParameters =-  LambdaParametersTuple [LambdaParameters] |-  LambdaParametersSingle Identifier-  deriving (Eq, Ord, Read, Show)--_LambdaParameters = Core.Name "hydra.java.syntax.LambdaParameters"--_LambdaParameters_tuple = Core.Name "tuple"--_LambdaParameters_single = Core.Name "single"--data LambdaParameter =-  LambdaParameterNormal LambdaParameter_Normal |-  LambdaParameterVariableArity VariableArityParameter-  deriving (Eq, Ord, Read, Show)--_LambdaParameter = Core.Name "hydra.java.syntax.LambdaParameter"--_LambdaParameter_normal = Core.Name "normal"--_LambdaParameter_variableArity = Core.Name "variableArity"--data LambdaParameter_Normal =-  LambdaParameter_Normal {-    lambdaParameter_NormalModifiers :: [VariableModifier],-    lambdaParameter_NormalType :: LambdaParameterType,-    lambdaParameter_NormalId :: VariableDeclaratorId}-  deriving (Eq, Ord, Read, Show)--_LambdaParameter_Normal = Core.Name "hydra.java.syntax.LambdaParameter_Normal"--_LambdaParameter_Normal_modifiers = Core.Name "modifiers"--_LambdaParameter_Normal_type = Core.Name "type"--_LambdaParameter_Normal_id = Core.Name "id"--data LambdaParameterType =-  LambdaParameterTypeType UnannType |-  LambdaParameterTypeVar-  deriving (Eq, Ord, Read, Show)--_LambdaParameterType = Core.Name "hydra.java.syntax.LambdaParameterType"--_LambdaParameterType_type = Core.Name "type"--_LambdaParameterType_var = Core.Name "var"--data LambdaBody =-  LambdaBodyExpression Expression |-  LambdaBodyBlock Block-  deriving (Eq, Ord, Read, Show)--_LambdaBody = Core.Name "hydra.java.syntax.LambdaBody"--_LambdaBody_expression = Core.Name "expression"--_LambdaBody_block = Core.Name "block"--data AssignmentExpression =-  AssignmentExpressionConditional ConditionalExpression |-  AssignmentExpressionAssignment Assignment-  deriving (Eq, Ord, Read, Show)--_AssignmentExpression = Core.Name "hydra.java.syntax.AssignmentExpression"--_AssignmentExpression_conditional = Core.Name "conditional"--_AssignmentExpression_assignment = Core.Name "assignment"--data Assignment =-  Assignment {-    assignmentLhs :: LeftHandSide,-    assignmentOp :: AssignmentOperator,-    assignmentExpression :: Expression}-  deriving (Eq, Ord, Read, Show)--_Assignment = Core.Name "hydra.java.syntax.Assignment"--_Assignment_lhs = Core.Name "lhs"--_Assignment_op = Core.Name "op"--_Assignment_expression = Core.Name "expression"--data LeftHandSide =-  LeftHandSideExpressionName ExpressionName |-  LeftHandSideFieldAccess FieldAccess |-  LeftHandSideArrayAccess ArrayAccess-  deriving (Eq, Ord, Read, Show)--_LeftHandSide = Core.Name "hydra.java.syntax.LeftHandSide"--_LeftHandSide_expressionName = Core.Name "expressionName"--_LeftHandSide_fieldAccess = Core.Name "fieldAccess"--_LeftHandSide_arrayAccess = Core.Name "arrayAccess"--data AssignmentOperator =-  AssignmentOperatorSimple |-  AssignmentOperatorTimes |-  AssignmentOperatorDiv |-  AssignmentOperatorMod |-  AssignmentOperatorPlus |-  AssignmentOperatorMinus |-  AssignmentOperatorShiftLeft |-  AssignmentOperatorShiftRight |-  AssignmentOperatorShiftRightZeroFill |-  AssignmentOperatorAnd |-  AssignmentOperatorXor |-  AssignmentOperatorOr-  deriving (Eq, Ord, Read, Show)--_AssignmentOperator = Core.Name "hydra.java.syntax.AssignmentOperator"--_AssignmentOperator_simple = Core.Name "simple"--_AssignmentOperator_times = Core.Name "times"--_AssignmentOperator_div = Core.Name "div"--_AssignmentOperator_mod = Core.Name "mod"--_AssignmentOperator_plus = Core.Name "plus"--_AssignmentOperator_minus = Core.Name "minus"--_AssignmentOperator_shiftLeft = Core.Name "shiftLeft"--_AssignmentOperator_shiftRight = Core.Name "shiftRight"--_AssignmentOperator_shiftRightZeroFill = Core.Name "shiftRightZeroFill"--_AssignmentOperator_and = Core.Name "and"--_AssignmentOperator_xor = Core.Name "xor"--_AssignmentOperator_or = Core.Name "or"--data ConditionalExpression =-  ConditionalExpressionSimple ConditionalOrExpression |-  ConditionalExpressionTernaryCond ConditionalExpression_TernaryCond |-  ConditionalExpressionTernaryLambda ConditionalExpression_TernaryLambda-  deriving (Eq, Ord, Read, Show)--_ConditionalExpression = Core.Name "hydra.java.syntax.ConditionalExpression"--_ConditionalExpression_simple = Core.Name "simple"--_ConditionalExpression_ternaryCond = Core.Name "ternaryCond"--_ConditionalExpression_ternaryLambda = Core.Name "ternaryLambda"--data ConditionalExpression_TernaryCond =-  ConditionalExpression_TernaryCond {-    conditionalExpression_TernaryCondCond :: ConditionalOrExpression,-    conditionalExpression_TernaryCondIfTrue :: Expression,-    conditionalExpression_TernaryCondIfFalse :: ConditionalExpression}-  deriving (Eq, Ord, Read, Show)--_ConditionalExpression_TernaryCond = Core.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"--_ConditionalExpression_TernaryCond_cond = Core.Name "cond"--_ConditionalExpression_TernaryCond_ifTrue = Core.Name "ifTrue"--_ConditionalExpression_TernaryCond_ifFalse = Core.Name "ifFalse"--data ConditionalExpression_TernaryLambda =-  ConditionalExpression_TernaryLambda {-    conditionalExpression_TernaryLambdaCond :: ConditionalOrExpression,-    conditionalExpression_TernaryLambdaIfTrue :: Expression,-    conditionalExpression_TernaryLambdaIfFalse :: LambdaExpression}-  deriving (Eq, Ord, Read, Show)--_ConditionalExpression_TernaryLambda = Core.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"--_ConditionalExpression_TernaryLambda_cond = Core.Name "cond"--_ConditionalExpression_TernaryLambda_ifTrue = Core.Name "ifTrue"--_ConditionalExpression_TernaryLambda_ifFalse = Core.Name "ifFalse"--newtype ConditionalOrExpression =-  ConditionalOrExpression {-    unConditionalOrExpression :: [ConditionalAndExpression]}-  deriving (Eq, Ord, Read, Show)--_ConditionalOrExpression = Core.Name "hydra.java.syntax.ConditionalOrExpression"--newtype ConditionalAndExpression =-  ConditionalAndExpression {-    unConditionalAndExpression :: [InclusiveOrExpression]}-  deriving (Eq, Ord, Read, Show)--_ConditionalAndExpression = Core.Name "hydra.java.syntax.ConditionalAndExpression"--newtype InclusiveOrExpression =-  InclusiveOrExpression {-    unInclusiveOrExpression :: [ExclusiveOrExpression]}-  deriving (Eq, Ord, Read, Show)--_InclusiveOrExpression = Core.Name "hydra.java.syntax.InclusiveOrExpression"--newtype ExclusiveOrExpression =-  ExclusiveOrExpression {-    unExclusiveOrExpression :: [AndExpression]}-  deriving (Eq, Ord, Read, Show)--_ExclusiveOrExpression = Core.Name "hydra.java.syntax.ExclusiveOrExpression"--newtype AndExpression =-  AndExpression {-    unAndExpression :: [EqualityExpression]}-  deriving (Eq, Ord, Read, Show)--_AndExpression = Core.Name "hydra.java.syntax.AndExpression"--data EqualityExpression =-  EqualityExpressionUnary RelationalExpression |-  EqualityExpressionEqual EqualityExpression_Binary |-  EqualityExpressionNotEqual EqualityExpression_Binary-  deriving (Eq, Ord, Read, Show)--_EqualityExpression = Core.Name "hydra.java.syntax.EqualityExpression"--_EqualityExpression_unary = Core.Name "unary"--_EqualityExpression_equal = Core.Name "equal"--_EqualityExpression_notEqual = Core.Name "notEqual"--data EqualityExpression_Binary =-  EqualityExpression_Binary {-    equalityExpression_BinaryLhs :: EqualityExpression,-    equalityExpression_BinaryRhs :: RelationalExpression}-  deriving (Eq, Ord, Read, Show)--_EqualityExpression_Binary = Core.Name "hydra.java.syntax.EqualityExpression_Binary"--_EqualityExpression_Binary_lhs = Core.Name "lhs"--_EqualityExpression_Binary_rhs = Core.Name "rhs"--data RelationalExpression =-  RelationalExpressionSimple ShiftExpression |-  RelationalExpressionLessThan RelationalExpression_LessThan |-  RelationalExpressionGreaterThan RelationalExpression_GreaterThan |-  RelationalExpressionLessThanEqual RelationalExpression_LessThanEqual |-  RelationalExpressionGreaterThanEqual RelationalExpression_GreaterThanEqual |-  RelationalExpressionInstanceofExpression InstanceofExpression-  deriving (Eq, Ord, Read, Show)--_RelationalExpression = Core.Name "hydra.java.syntax.RelationalExpression"--_RelationalExpression_simple = Core.Name "simple"--_RelationalExpression_lessThan = Core.Name "lessThan"--_RelationalExpression_greaterThan = Core.Name "greaterThan"--_RelationalExpression_lessThanEqual = Core.Name "lessThanEqual"--_RelationalExpression_greaterThanEqual = Core.Name "greaterThanEqual"--_RelationalExpression_instanceofExpression = Core.Name "instanceofExpression"--data RelationalExpression_LessThan =-  RelationalExpression_LessThan {-    relationalExpression_LessThanLhs :: RelationalExpression,-    relationalExpression_LessThanRhs :: ShiftExpression}-  deriving (Eq, Ord, Read, Show)--_RelationalExpression_LessThan = Core.Name "hydra.java.syntax.RelationalExpression_LessThan"--_RelationalExpression_LessThan_lhs = Core.Name "lhs"--_RelationalExpression_LessThan_rhs = Core.Name "rhs"--data RelationalExpression_GreaterThan =-  RelationalExpression_GreaterThan {-    relationalExpression_GreaterThanLhs :: RelationalExpression,-    relationalExpression_GreaterThanRhs :: ShiftExpression}-  deriving (Eq, Ord, Read, Show)--_RelationalExpression_GreaterThan = Core.Name "hydra.java.syntax.RelationalExpression_GreaterThan"--_RelationalExpression_GreaterThan_lhs = Core.Name "lhs"--_RelationalExpression_GreaterThan_rhs = Core.Name "rhs"--data RelationalExpression_LessThanEqual =-  RelationalExpression_LessThanEqual {-    relationalExpression_LessThanEqualLhs :: RelationalExpression,-    relationalExpression_LessThanEqualRhs :: ShiftExpression}-  deriving (Eq, Ord, Read, Show)--_RelationalExpression_LessThanEqual = Core.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"--_RelationalExpression_LessThanEqual_lhs = Core.Name "lhs"--_RelationalExpression_LessThanEqual_rhs = Core.Name "rhs"--data RelationalExpression_GreaterThanEqual =-  RelationalExpression_GreaterThanEqual {-    relationalExpression_GreaterThanEqualLhs :: RelationalExpression,-    relationalExpression_GreaterThanEqualRhs :: ShiftExpression}-  deriving (Eq, Ord, Read, Show)--_RelationalExpression_GreaterThanEqual = Core.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"--_RelationalExpression_GreaterThanEqual_lhs = Core.Name "lhs"--_RelationalExpression_GreaterThanEqual_rhs = Core.Name "rhs"--data InstanceofExpression =-  InstanceofExpression {-    instanceofExpressionLhs :: RelationalExpression,-    instanceofExpressionRhs :: InstanceofExpression_Rhs}-  deriving (Eq, Ord, Read, Show)--_InstanceofExpression = Core.Name "hydra.java.syntax.InstanceofExpression"--_InstanceofExpression_lhs = Core.Name "lhs"--_InstanceofExpression_rhs = Core.Name "rhs"--data InstanceofExpression_Rhs =-  InstanceofExpression_RhsReferenceType ReferenceType |-  InstanceofExpression_RhsPattern Pattern-  deriving (Eq, Ord, Read, Show)--_InstanceofExpression_Rhs = Core.Name "hydra.java.syntax.InstanceofExpression_Rhs"--_InstanceofExpression_Rhs_referenceType = Core.Name "referenceType"--_InstanceofExpression_Rhs_pattern = Core.Name "pattern"--data ShiftExpression =-  ShiftExpressionUnary AdditiveExpression |-  ShiftExpressionShiftLeft ShiftExpression_Binary |-  ShiftExpressionShiftRight ShiftExpression_Binary |-  ShiftExpressionShiftRightZeroFill ShiftExpression_Binary-  deriving (Eq, Ord, Read, Show)--_ShiftExpression = Core.Name "hydra.java.syntax.ShiftExpression"--_ShiftExpression_unary = Core.Name "unary"--_ShiftExpression_shiftLeft = Core.Name "shiftLeft"--_ShiftExpression_shiftRight = Core.Name "shiftRight"--_ShiftExpression_shiftRightZeroFill = Core.Name "shiftRightZeroFill"--data ShiftExpression_Binary =-  ShiftExpression_Binary {-    shiftExpression_BinaryLhs :: ShiftExpression,-    shiftExpression_BinaryRhs :: AdditiveExpression}-  deriving (Eq, Ord, Read, Show)--_ShiftExpression_Binary = Core.Name "hydra.java.syntax.ShiftExpression_Binary"--_ShiftExpression_Binary_lhs = Core.Name "lhs"--_ShiftExpression_Binary_rhs = Core.Name "rhs"--data AdditiveExpression =-  AdditiveExpressionUnary MultiplicativeExpression |-  AdditiveExpressionPlus AdditiveExpression_Binary |-  AdditiveExpressionMinus AdditiveExpression_Binary-  deriving (Eq, Ord, Read, Show)--_AdditiveExpression = Core.Name "hydra.java.syntax.AdditiveExpression"--_AdditiveExpression_unary = Core.Name "unary"--_AdditiveExpression_plus = Core.Name "plus"--_AdditiveExpression_minus = Core.Name "minus"--data AdditiveExpression_Binary =-  AdditiveExpression_Binary {-    additiveExpression_BinaryLhs :: AdditiveExpression,-    additiveExpression_BinaryRhs :: MultiplicativeExpression}-  deriving (Eq, Ord, Read, Show)--_AdditiveExpression_Binary = Core.Name "hydra.java.syntax.AdditiveExpression_Binary"--_AdditiveExpression_Binary_lhs = Core.Name "lhs"--_AdditiveExpression_Binary_rhs = Core.Name "rhs"--data MultiplicativeExpression =-  MultiplicativeExpressionUnary UnaryExpression |-  MultiplicativeExpressionTimes MultiplicativeExpression_Binary |-  MultiplicativeExpressionDivide MultiplicativeExpression_Binary |-  MultiplicativeExpressionMod MultiplicativeExpression_Binary-  deriving (Eq, Ord, Read, Show)--_MultiplicativeExpression = Core.Name "hydra.java.syntax.MultiplicativeExpression"--_MultiplicativeExpression_unary = Core.Name "unary"--_MultiplicativeExpression_times = Core.Name "times"--_MultiplicativeExpression_divide = Core.Name "divide"--_MultiplicativeExpression_mod = Core.Name "mod"--data MultiplicativeExpression_Binary =-  MultiplicativeExpression_Binary {-    multiplicativeExpression_BinaryLhs :: MultiplicativeExpression,-    multiplicativeExpression_BinaryRhs :: UnaryExpression}-  deriving (Eq, Ord, Read, Show)--_MultiplicativeExpression_Binary = Core.Name "hydra.java.syntax.MultiplicativeExpression_Binary"--_MultiplicativeExpression_Binary_lhs = Core.Name "lhs"--_MultiplicativeExpression_Binary_rhs = Core.Name "rhs"--data UnaryExpression =-  UnaryExpressionPreIncrement PreIncrementExpression |-  UnaryExpressionPreDecrement PreDecrementExpression |-  UnaryExpressionPlus UnaryExpression |-  UnaryExpressionMinus UnaryExpression |-  UnaryExpressionOther UnaryExpressionNotPlusMinus-  deriving (Eq, Ord, Read, Show)--_UnaryExpression = Core.Name "hydra.java.syntax.UnaryExpression"--_UnaryExpression_preIncrement = Core.Name "preIncrement"--_UnaryExpression_preDecrement = Core.Name "preDecrement"--_UnaryExpression_plus = Core.Name "plus"--_UnaryExpression_minus = Core.Name "minus"--_UnaryExpression_other = Core.Name "other"--newtype PreIncrementExpression =-  PreIncrementExpression {-    unPreIncrementExpression :: UnaryExpression}-  deriving (Eq, Ord, Read, Show)--_PreIncrementExpression = Core.Name "hydra.java.syntax.PreIncrementExpression"--newtype PreDecrementExpression =-  PreDecrementExpression {-    unPreDecrementExpression :: UnaryExpression}-  deriving (Eq, Ord, Read, Show)--_PreDecrementExpression = Core.Name "hydra.java.syntax.PreDecrementExpression"--data UnaryExpressionNotPlusMinus =-  UnaryExpressionNotPlusMinusPostfix PostfixExpression |-  UnaryExpressionNotPlusMinusTilde UnaryExpression |-  UnaryExpressionNotPlusMinusNot UnaryExpression |-  UnaryExpressionNotPlusMinusCast CastExpression |-  UnaryExpressionNotPlusMinusSwitchExpression SwitchExpression-  deriving (Eq, Ord, Read, Show)--_UnaryExpressionNotPlusMinus = Core.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"--_UnaryExpressionNotPlusMinus_postfix = Core.Name "postfix"--_UnaryExpressionNotPlusMinus_tilde = Core.Name "tilde"--_UnaryExpressionNotPlusMinus_not = Core.Name "not"--_UnaryExpressionNotPlusMinus_cast = Core.Name "cast"--_UnaryExpressionNotPlusMinus_switchExpression = Core.Name "switchExpression"--data PostfixExpression =-  PostfixExpressionPrimary Primary |-  PostfixExpressionName ExpressionName |-  PostfixExpressionPostIncrement PostIncrementExpression |-  PostfixExpressionPostDecrement PostDecrementExpression-  deriving (Eq, Ord, Read, Show)--_PostfixExpression = Core.Name "hydra.java.syntax.PostfixExpression"--_PostfixExpression_primary = Core.Name "primary"--_PostfixExpression_name = Core.Name "name"--_PostfixExpression_postIncrement = Core.Name "postIncrement"--_PostfixExpression_postDecrement = Core.Name "postDecrement"--newtype PostIncrementExpression =-  PostIncrementExpression {-    unPostIncrementExpression :: PostfixExpression}-  deriving (Eq, Ord, Read, Show)--_PostIncrementExpression = Core.Name "hydra.java.syntax.PostIncrementExpression"--newtype PostDecrementExpression =-  PostDecrementExpression {-    unPostDecrementExpression :: PostfixExpression}-  deriving (Eq, Ord, Read, Show)--_PostDecrementExpression = Core.Name "hydra.java.syntax.PostDecrementExpression"--data CastExpression =-  CastExpressionPrimitive CastExpression_Primitive |-  CastExpressionNotPlusMinus CastExpression_NotPlusMinus |-  CastExpressionLambda CastExpression_Lambda-  deriving (Eq, Ord, Read, Show)--_CastExpression = Core.Name "hydra.java.syntax.CastExpression"--_CastExpression_primitive = Core.Name "primitive"--_CastExpression_notPlusMinus = Core.Name "notPlusMinus"--_CastExpression_lambda = Core.Name "lambda"--data CastExpression_Primitive =-  CastExpression_Primitive {-    castExpression_PrimitiveType :: PrimitiveTypeWithAnnotations,-    castExpression_PrimitiveExpression :: UnaryExpression}-  deriving (Eq, Ord, Read, Show)--_CastExpression_Primitive = Core.Name "hydra.java.syntax.CastExpression_Primitive"--_CastExpression_Primitive_type = Core.Name "type"--_CastExpression_Primitive_expression = Core.Name "expression"--data CastExpression_NotPlusMinus =-  CastExpression_NotPlusMinus {-    castExpression_NotPlusMinusRefAndBounds :: CastExpression_RefAndBounds,-    castExpression_NotPlusMinusExpression :: UnaryExpression}-  deriving (Eq, Ord, Read, Show)--_CastExpression_NotPlusMinus = Core.Name "hydra.java.syntax.CastExpression_NotPlusMinus"--_CastExpression_NotPlusMinus_refAndBounds = Core.Name "refAndBounds"--_CastExpression_NotPlusMinus_expression = Core.Name "expression"--data CastExpression_Lambda =-  CastExpression_Lambda {-    castExpression_LambdaRefAndBounds :: CastExpression_RefAndBounds,-    castExpression_LambdaExpression :: LambdaExpression}-  deriving (Eq, Ord, Read, Show)--_CastExpression_Lambda = Core.Name "hydra.java.syntax.CastExpression_Lambda"--_CastExpression_Lambda_refAndBounds = Core.Name "refAndBounds"--_CastExpression_Lambda_expression = Core.Name "expression"--data CastExpression_RefAndBounds =-  CastExpression_RefAndBounds {-    castExpression_RefAndBoundsType :: ReferenceType,-    castExpression_RefAndBoundsBounds :: [AdditionalBound]}-  deriving (Eq, Ord, Read, Show)--_CastExpression_RefAndBounds = Core.Name "hydra.java.syntax.CastExpression_RefAndBounds"--_CastExpression_RefAndBounds_type = Core.Name "type"--_CastExpression_RefAndBounds_bounds = Core.Name "bounds"--data SwitchExpression =-  SwitchExpression {-    switchExpressionCond :: Expression,-    switchExpressionBlock :: SwitchBlock}-  deriving (Eq, Ord, Read, Show)--_SwitchExpression = Core.Name "hydra.java.syntax.SwitchExpression"--_SwitchExpression_cond = Core.Name "cond"--_SwitchExpression_block = Core.Name "block"--newtype ConstantExpression =-  ConstantExpression {-    unConstantExpression :: Expression}-  deriving (Eq, Ord, Read, Show)--_ConstantExpression = Core.Name "hydra.java.syntax.ConstantExpression"+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++newtype Identifier =+  Identifier {+    unIdentifier :: String}+  deriving (Eq, Ord, Read, Show)++_Identifier = Model.Name "hydra.java.syntax.Identifier"++newtype TypeIdentifier =+  TypeIdentifier {+    unTypeIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_TypeIdentifier = Model.Name "hydra.java.syntax.TypeIdentifier"++data Literal =+  LiteralNull |+  LiteralInteger IntegerLiteral |+  LiteralFloatingPoint FloatingPointLiteral |+  LiteralBoolean Bool |+  LiteralCharacter Int |+  LiteralString StringLiteral |+  LiteralTextBlock TextBlock+  deriving (Eq, Ord, Read, Show)++_Literal = Model.Name "hydra.java.syntax.Literal"++_Literal_null = Model.Name "null"++_Literal_integer = Model.Name "integer"++_Literal_floatingPoint = Model.Name "floatingPoint"++_Literal_boolean = Model.Name "boolean"++_Literal_character = Model.Name "character"++_Literal_string = Model.Name "string"++_Literal_textBlock = Model.Name "textBlock"++-- | Note: this is an approximation which ignores encoding+newtype IntegerLiteral =+  IntegerLiteral {+    unIntegerLiteral :: Integer}+  deriving (Eq, Ord, Read, Show)++_IntegerLiteral = Model.Name "hydra.java.syntax.IntegerLiteral"++-- | Note: this is an approximation which ignores encoding+newtype FloatingPointLiteral =+  FloatingPointLiteral {+    unFloatingPointLiteral :: Double}+  deriving (Eq, Ord, Read, Show)++_FloatingPointLiteral = Model.Name "hydra.java.syntax.FloatingPointLiteral"++-- | Note: this is an approximation which ignores encoding+newtype StringLiteral =+  StringLiteral {+    unStringLiteral :: String}+  deriving (Eq, Ord, Read, Show)++_StringLiteral = Model.Name "hydra.java.syntax.StringLiteral"++-- | Note: this is an approximation which ignores encoding and incidental whitespace stripping+newtype TextBlock =+  TextBlock {+    unTextBlock :: String}+  deriving (Eq, Ord, Read, Show)++_TextBlock = Model.Name "hydra.java.syntax.TextBlock"++data Type =+  TypePrimitive PrimitiveTypeWithAnnotations |+  TypeReference ReferenceType+  deriving (Eq, Ord, Read, Show)++_Type = Model.Name "hydra.java.syntax.Type"++_Type_primitive = Model.Name "primitive"++_Type_reference = Model.Name "reference"++data PrimitiveTypeWithAnnotations =+  PrimitiveTypeWithAnnotations {+    primitiveTypeWithAnnotationsType :: PrimitiveType,+    primitiveTypeWithAnnotationsAnnotations :: [Annotation]}+  deriving (Eq, Ord, Read, Show)++_PrimitiveTypeWithAnnotations = Model.Name "hydra.java.syntax.PrimitiveTypeWithAnnotations"++_PrimitiveTypeWithAnnotations_type = Model.Name "type"++_PrimitiveTypeWithAnnotations_annotations = Model.Name "annotations"++data PrimitiveType =+  PrimitiveTypeNumeric NumericType |+  PrimitiveTypeBoolean+  deriving (Eq, Ord, Read, Show)++_PrimitiveType = Model.Name "hydra.java.syntax.PrimitiveType"++_PrimitiveType_numeric = Model.Name "numeric"++_PrimitiveType_boolean = Model.Name "boolean"++data NumericType =+  NumericTypeIntegral IntegralType |+  NumericTypeFloatingPoint FloatingPointType+  deriving (Eq, Ord, Read, Show)++_NumericType = Model.Name "hydra.java.syntax.NumericType"++_NumericType_integral = Model.Name "integral"++_NumericType_floatingPoint = Model.Name "floatingPoint"++data IntegralType =+  IntegralTypeByte |+  IntegralTypeShort |+  IntegralTypeInt |+  IntegralTypeLong |+  IntegralTypeChar+  deriving (Eq, Ord, Read, Show)++_IntegralType = Model.Name "hydra.java.syntax.IntegralType"++_IntegralType_byte = Model.Name "byte"++_IntegralType_short = Model.Name "short"++_IntegralType_int = Model.Name "int"++_IntegralType_long = Model.Name "long"++_IntegralType_char = Model.Name "char"++data FloatingPointType =+  FloatingPointTypeFloat |+  FloatingPointTypeDouble+  deriving (Eq, Ord, Read, Show)++_FloatingPointType = Model.Name "hydra.java.syntax.FloatingPointType"++_FloatingPointType_float = Model.Name "float"++_FloatingPointType_double = Model.Name "double"++data ReferenceType =+  ReferenceTypeClassOrInterface ClassOrInterfaceType |+  ReferenceTypeVariable TypeVariable |+  ReferenceTypeArray ArrayType+  deriving (Eq, Ord, Read, Show)++_ReferenceType = Model.Name "hydra.java.syntax.ReferenceType"++_ReferenceType_classOrInterface = Model.Name "classOrInterface"++_ReferenceType_variable = Model.Name "variable"++_ReferenceType_array = Model.Name "array"++data ClassOrInterfaceType =+  ClassOrInterfaceTypeClass ClassType |+  ClassOrInterfaceTypeInterface InterfaceType+  deriving (Eq, Ord, Read, Show)++_ClassOrInterfaceType = Model.Name "hydra.java.syntax.ClassOrInterfaceType"++_ClassOrInterfaceType_class = Model.Name "class"++_ClassOrInterfaceType_interface = Model.Name "interface"++data ClassType =+  ClassType {+    classTypeAnnotations :: [Annotation],+    classTypeQualifier :: ClassTypeQualifier,+    classTypeIdentifier :: TypeIdentifier,+    classTypeArguments :: [TypeArgument]}+  deriving (Eq, Ord, Read, Show)++_ClassType = Model.Name "hydra.java.syntax.ClassType"++_ClassType_annotations = Model.Name "annotations"++_ClassType_qualifier = Model.Name "qualifier"++_ClassType_identifier = Model.Name "identifier"++_ClassType_arguments = Model.Name "arguments"++data ClassTypeQualifier =+  ClassTypeQualifierNone |+  ClassTypeQualifierPackage PackageName |+  ClassTypeQualifierParent ClassOrInterfaceType+  deriving (Eq, Ord, Read, Show)++_ClassTypeQualifier = Model.Name "hydra.java.syntax.ClassTypeQualifier"++_ClassTypeQualifier_none = Model.Name "none"++_ClassTypeQualifier_package = Model.Name "package"++_ClassTypeQualifier_parent = Model.Name "parent"++newtype InterfaceType =+  InterfaceType {+    unInterfaceType :: ClassType}+  deriving (Eq, Ord, Read, Show)++_InterfaceType = Model.Name "hydra.java.syntax.InterfaceType"++data TypeVariable =+  TypeVariable {+    typeVariableAnnotations :: [Annotation],+    typeVariableIdentifier :: TypeIdentifier}+  deriving (Eq, Ord, Read, Show)++_TypeVariable = Model.Name "hydra.java.syntax.TypeVariable"++_TypeVariable_annotations = Model.Name "annotations"++_TypeVariable_identifier = Model.Name "identifier"++data ArrayType =+  ArrayType {+    arrayTypeDims :: Dims,+    arrayTypeVariant :: ArrayType_Variant}+  deriving (Eq, Ord, Read, Show)++_ArrayType = Model.Name "hydra.java.syntax.ArrayType"++_ArrayType_dims = Model.Name "dims"++_ArrayType_variant = Model.Name "variant"++data ArrayType_Variant =+  ArrayType_VariantPrimitive PrimitiveTypeWithAnnotations |+  ArrayType_VariantClassOrInterface ClassOrInterfaceType |+  ArrayType_VariantVariable TypeVariable+  deriving (Eq, Ord, Read, Show)++_ArrayType_Variant = Model.Name "hydra.java.syntax.ArrayType_Variant"++_ArrayType_Variant_primitive = Model.Name "primitive"++_ArrayType_Variant_classOrInterface = Model.Name "classOrInterface"++_ArrayType_Variant_variable = Model.Name "variable"++newtype Dims =+  Dims {+    unDims :: [[Annotation]]}+  deriving (Eq, Ord, Read, Show)++_Dims = Model.Name "hydra.java.syntax.Dims"++data TypeParameter =+  TypeParameter {+    typeParameterModifiers :: [TypeParameterModifier],+    typeParameterIdentifier :: TypeIdentifier,+    typeParameterBound :: (Maybe TypeBound)}+  deriving (Eq, Ord, Read, Show)++_TypeParameter = Model.Name "hydra.java.syntax.TypeParameter"++_TypeParameter_modifiers = Model.Name "modifiers"++_TypeParameter_identifier = Model.Name "identifier"++_TypeParameter_bound = Model.Name "bound"++newtype TypeParameterModifier =+  TypeParameterModifier {+    unTypeParameterModifier :: Annotation}+  deriving (Eq, Ord, Read, Show)++_TypeParameterModifier = Model.Name "hydra.java.syntax.TypeParameterModifier"++data TypeBound =+  TypeBoundVariable TypeVariable |+  TypeBoundClassOrInterface TypeBound_ClassOrInterface+  deriving (Eq, Ord, Read, Show)++_TypeBound = Model.Name "hydra.java.syntax.TypeBound"++_TypeBound_variable = Model.Name "variable"++_TypeBound_classOrInterface = Model.Name "classOrInterface"++data TypeBound_ClassOrInterface =+  TypeBound_ClassOrInterface {+    typeBound_ClassOrInterfaceType :: ClassOrInterfaceType,+    typeBound_ClassOrInterfaceAdditional :: [AdditionalBound]}+  deriving (Eq, Ord, Read, Show)++_TypeBound_ClassOrInterface = Model.Name "hydra.java.syntax.TypeBound_ClassOrInterface"++_TypeBound_ClassOrInterface_type = Model.Name "type"++_TypeBound_ClassOrInterface_additional = Model.Name "additional"++newtype AdditionalBound =+  AdditionalBound {+    unAdditionalBound :: InterfaceType}+  deriving (Eq, Ord, Read, Show)++_AdditionalBound = Model.Name "hydra.java.syntax.AdditionalBound"++data TypeArgument =+  TypeArgumentReference ReferenceType |+  TypeArgumentWildcard Wildcard+  deriving (Eq, Ord, Read, Show)++_TypeArgument = Model.Name "hydra.java.syntax.TypeArgument"++_TypeArgument_reference = Model.Name "reference"++_TypeArgument_wildcard = Model.Name "wildcard"++data Wildcard =+  Wildcard {+    wildcardAnnotations :: [Annotation],+    wildcardWildcard :: (Maybe WildcardBounds)}+  deriving (Eq, Ord, Read, Show)++_Wildcard = Model.Name "hydra.java.syntax.Wildcard"++_Wildcard_annotations = Model.Name "annotations"++_Wildcard_wildcard = Model.Name "wildcard"++data WildcardBounds =+  WildcardBoundsExtends ReferenceType |+  WildcardBoundsSuper ReferenceType+  deriving (Eq, Ord, Read, Show)++_WildcardBounds = Model.Name "hydra.java.syntax.WildcardBounds"++_WildcardBounds_extends = Model.Name "extends"++_WildcardBounds_super = Model.Name "super"++data ModuleName =+  ModuleName {+    moduleNameIdentifier :: Identifier,+    moduleNameName :: (Maybe ModuleName)}+  deriving (Eq, Ord, Read, Show)++_ModuleName = Model.Name "hydra.java.syntax.ModuleName"++_ModuleName_identifier = Model.Name "identifier"++_ModuleName_name = Model.Name "name"++newtype PackageName =+  PackageName {+    unPackageName :: [Identifier]}+  deriving (Eq, Ord, Read, Show)++_PackageName = Model.Name "hydra.java.syntax.PackageName"++data TypeName =+  TypeName {+    typeNameIdentifier :: TypeIdentifier,+    typeNameQualifier :: (Maybe PackageOrTypeName)}+  deriving (Eq, Ord, Read, Show)++_TypeName = Model.Name "hydra.java.syntax.TypeName"++_TypeName_identifier = Model.Name "identifier"++_TypeName_qualifier = Model.Name "qualifier"++data ExpressionName =+  ExpressionName {+    expressionNameQualifier :: (Maybe AmbiguousName),+    expressionNameIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_ExpressionName = Model.Name "hydra.java.syntax.ExpressionName"++_ExpressionName_qualifier = Model.Name "qualifier"++_ExpressionName_identifier = Model.Name "identifier"++newtype MethodName =+  MethodName {+    unMethodName :: Identifier}+  deriving (Eq, Ord, Read, Show)++_MethodName = Model.Name "hydra.java.syntax.MethodName"++newtype PackageOrTypeName =+  PackageOrTypeName {+    unPackageOrTypeName :: [Identifier]}+  deriving (Eq, Ord, Read, Show)++_PackageOrTypeName = Model.Name "hydra.java.syntax.PackageOrTypeName"++newtype AmbiguousName =+  AmbiguousName {+    unAmbiguousName :: [Identifier]}+  deriving (Eq, Ord, Read, Show)++_AmbiguousName = Model.Name "hydra.java.syntax.AmbiguousName"++data CompilationUnit =+  CompilationUnitOrdinary OrdinaryCompilationUnit |+  CompilationUnitModular ModularCompilationUnit+  deriving (Eq, Ord, Read, Show)++_CompilationUnit = Model.Name "hydra.java.syntax.CompilationUnit"++_CompilationUnit_ordinary = Model.Name "ordinary"++_CompilationUnit_modular = Model.Name "modular"++data OrdinaryCompilationUnit =+  OrdinaryCompilationUnit {+    ordinaryCompilationUnitPackage :: (Maybe PackageDeclaration),+    ordinaryCompilationUnitImports :: [ImportDeclaration],+    ordinaryCompilationUnitTypes :: [TopLevelClassOrInterfaceDeclarationWithComments]}+  deriving (Eq, Ord, Read, Show)++_OrdinaryCompilationUnit = Model.Name "hydra.java.syntax.OrdinaryCompilationUnit"++_OrdinaryCompilationUnit_package = Model.Name "package"++_OrdinaryCompilationUnit_imports = Model.Name "imports"++_OrdinaryCompilationUnit_types = Model.Name "types"++data ModularCompilationUnit =+  ModularCompilationUnit {+    modularCompilationUnitImports :: [ImportDeclaration],+    modularCompilationUnitModule :: ModuleDeclaration}+  deriving (Eq, Ord, Read, Show)++_ModularCompilationUnit = Model.Name "hydra.java.syntax.ModularCompilationUnit"++_ModularCompilationUnit_imports = Model.Name "imports"++_ModularCompilationUnit_module = Model.Name "module"++data PackageDeclaration =+  PackageDeclaration {+    packageDeclarationModifiers :: [PackageModifier],+    packageDeclarationIdentifiers :: [Identifier]}+  deriving (Eq, Ord, Read, Show)++_PackageDeclaration = Model.Name "hydra.java.syntax.PackageDeclaration"++_PackageDeclaration_modifiers = Model.Name "modifiers"++_PackageDeclaration_identifiers = Model.Name "identifiers"++newtype PackageModifier =+  PackageModifier {+    unPackageModifier :: Annotation}+  deriving (Eq, Ord, Read, Show)++_PackageModifier = Model.Name "hydra.java.syntax.PackageModifier"++data ImportDeclaration =+  ImportDeclarationSingleType SingleTypeImportDeclaration |+  ImportDeclarationTypeImportOnDemand TypeImportOnDemandDeclaration |+  ImportDeclarationSingleStaticImport SingleStaticImportDeclaration |+  ImportDeclarationStaticImportOnDemand StaticImportOnDemandDeclaration+  deriving (Eq, Ord, Read, Show)++_ImportDeclaration = Model.Name "hydra.java.syntax.ImportDeclaration"++_ImportDeclaration_singleType = Model.Name "singleType"++_ImportDeclaration_typeImportOnDemand = Model.Name "typeImportOnDemand"++_ImportDeclaration_singleStaticImport = Model.Name "singleStaticImport"++_ImportDeclaration_staticImportOnDemand = Model.Name "staticImportOnDemand"++newtype SingleTypeImportDeclaration =+  SingleTypeImportDeclaration {+    unSingleTypeImportDeclaration :: TypeName}+  deriving (Eq, Ord, Read, Show)++_SingleTypeImportDeclaration = Model.Name "hydra.java.syntax.SingleTypeImportDeclaration"++newtype TypeImportOnDemandDeclaration =+  TypeImportOnDemandDeclaration {+    unTypeImportOnDemandDeclaration :: PackageOrTypeName}+  deriving (Eq, Ord, Read, Show)++_TypeImportOnDemandDeclaration = Model.Name "hydra.java.syntax.TypeImportOnDemandDeclaration"++data SingleStaticImportDeclaration =+  SingleStaticImportDeclaration {+    singleStaticImportDeclarationTypeName :: TypeName,+    singleStaticImportDeclarationIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_SingleStaticImportDeclaration = Model.Name "hydra.java.syntax.SingleStaticImportDeclaration"++_SingleStaticImportDeclaration_typeName = Model.Name "typeName"++_SingleStaticImportDeclaration_identifier = Model.Name "identifier"++newtype StaticImportOnDemandDeclaration =+  StaticImportOnDemandDeclaration {+    unStaticImportOnDemandDeclaration :: TypeName}+  deriving (Eq, Ord, Read, Show)++_StaticImportOnDemandDeclaration = Model.Name "hydra.java.syntax.StaticImportOnDemandDeclaration"++data TopLevelClassOrInterfaceDeclaration =+  TopLevelClassOrInterfaceDeclarationClass ClassDeclaration |+  TopLevelClassOrInterfaceDeclarationInterface InterfaceDeclaration |+  TopLevelClassOrInterfaceDeclarationNone+  deriving (Eq, Ord, Read, Show)++_TopLevelClassOrInterfaceDeclaration = Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclaration"++_TopLevelClassOrInterfaceDeclaration_class = Model.Name "class"++_TopLevelClassOrInterfaceDeclaration_interface = Model.Name "interface"++_TopLevelClassOrInterfaceDeclaration_none = Model.Name "none"++data TopLevelClassOrInterfaceDeclarationWithComments =+  TopLevelClassOrInterfaceDeclarationWithComments {+    topLevelClassOrInterfaceDeclarationWithCommentsValue :: TopLevelClassOrInterfaceDeclaration,+    topLevelClassOrInterfaceDeclarationWithCommentsComments :: (Maybe String)}+  deriving (Eq, Ord, Read, Show)++_TopLevelClassOrInterfaceDeclarationWithComments =+    Model.Name "hydra.java.syntax.TopLevelClassOrInterfaceDeclarationWithComments"++_TopLevelClassOrInterfaceDeclarationWithComments_value = Model.Name "value"++_TopLevelClassOrInterfaceDeclarationWithComments_comments = Model.Name "comments"++data ModuleDeclaration =+  ModuleDeclaration {+    moduleDeclarationAnnotations :: [Annotation],+    moduleDeclarationOpen :: Bool,+    moduleDeclarationIdentifiers :: [Identifier],+    moduleDeclarationDirectives :: [ModuleDirective]}+  deriving (Eq, Ord, Read, Show)++_ModuleDeclaration = Model.Name "hydra.java.syntax.ModuleDeclaration"++_ModuleDeclaration_annotations = Model.Name "annotations"++_ModuleDeclaration_open = Model.Name "open"++_ModuleDeclaration_identifiers = Model.Name "identifiers"++_ModuleDeclaration_directives = Model.Name "directives"++data ModuleDirective =+  ModuleDirectiveRequires ModuleDirective_Requires |+  ModuleDirectiveExports ModuleDirective_ExportsOrOpens |+  ModuleDirectiveOpens ModuleDirective_ExportsOrOpens |+  ModuleDirectiveUses TypeName |+  ModuleDirectiveProvides ModuleDirective_Provides+  deriving (Eq, Ord, Read, Show)++_ModuleDirective = Model.Name "hydra.java.syntax.ModuleDirective"++_ModuleDirective_requires = Model.Name "requires"++_ModuleDirective_exports = Model.Name "exports"++_ModuleDirective_opens = Model.Name "opens"++_ModuleDirective_uses = Model.Name "uses"++_ModuleDirective_provides = Model.Name "provides"++data ModuleDirective_Requires =+  ModuleDirective_Requires {+    moduleDirective_RequiresModifiers :: [RequiresModifier],+    moduleDirective_RequiresModule :: ModuleName}+  deriving (Eq, Ord, Read, Show)++_ModuleDirective_Requires = Model.Name "hydra.java.syntax.ModuleDirective_Requires"++_ModuleDirective_Requires_modifiers = Model.Name "modifiers"++_ModuleDirective_Requires_module = Model.Name "module"++data ModuleDirective_ExportsOrOpens =+  ModuleDirective_ExportsOrOpens {+    moduleDirective_ExportsOrOpensPackage :: PackageName,+    -- | At least one module+    moduleDirective_ExportsOrOpensModules :: [ModuleName]}+  deriving (Eq, Ord, Read, Show)++_ModuleDirective_ExportsOrOpens = Model.Name "hydra.java.syntax.ModuleDirective_ExportsOrOpens"++_ModuleDirective_ExportsOrOpens_package = Model.Name "package"++_ModuleDirective_ExportsOrOpens_modules = Model.Name "modules"++data ModuleDirective_Provides =+  ModuleDirective_Provides {+    moduleDirective_ProvidesTo :: TypeName,+    -- | At least one type+    moduleDirective_ProvidesWith :: [TypeName]}+  deriving (Eq, Ord, Read, Show)++_ModuleDirective_Provides = Model.Name "hydra.java.syntax.ModuleDirective_Provides"++_ModuleDirective_Provides_to = Model.Name "to"++_ModuleDirective_Provides_with = Model.Name "with"++data RequiresModifier =+  RequiresModifierTransitive |+  RequiresModifierStatic+  deriving (Eq, Ord, Read, Show)++_RequiresModifier = Model.Name "hydra.java.syntax.RequiresModifier"++_RequiresModifier_transitive = Model.Name "transitive"++_RequiresModifier_static = Model.Name "static"++data ClassDeclaration =+  ClassDeclarationNormal NormalClassDeclaration |+  ClassDeclarationEnum EnumDeclaration |+  ClassDeclarationRecord RecordDeclaration+  deriving (Eq, Ord, Read, Show)++_ClassDeclaration = Model.Name "hydra.java.syntax.ClassDeclaration"++_ClassDeclaration_normal = Model.Name "normal"++_ClassDeclaration_enum = Model.Name "enum"++_ClassDeclaration_record = Model.Name "record"++data NormalClassDeclaration =+  NormalClassDeclaration {+    normalClassDeclarationModifiers :: [ClassModifier],+    normalClassDeclarationIdentifier :: TypeIdentifier,+    normalClassDeclarationParameters :: [TypeParameter],+    normalClassDeclarationExtends :: (Maybe ClassType),+    normalClassDeclarationImplements :: [InterfaceType],+    normalClassDeclarationPermits :: [TypeName],+    normalClassDeclarationBody :: ClassBody}+  deriving (Eq, Ord, Read, Show)++_NormalClassDeclaration = Model.Name "hydra.java.syntax.NormalClassDeclaration"++_NormalClassDeclaration_modifiers = Model.Name "modifiers"++_NormalClassDeclaration_identifier = Model.Name "identifier"++_NormalClassDeclaration_parameters = Model.Name "parameters"++_NormalClassDeclaration_extends = Model.Name "extends"++_NormalClassDeclaration_implements = Model.Name "implements"++_NormalClassDeclaration_permits = Model.Name "permits"++_NormalClassDeclaration_body = Model.Name "body"++data ClassModifier =+  ClassModifierAnnotation Annotation |+  ClassModifierPublic |+  ClassModifierProtected |+  ClassModifierPrivate |+  ClassModifierAbstract |+  ClassModifierStatic |+  ClassModifierFinal |+  ClassModifierSealed |+  ClassModifierNonSealed |+  ClassModifierStrictfp+  deriving (Eq, Ord, Read, Show)++_ClassModifier = Model.Name "hydra.java.syntax.ClassModifier"++_ClassModifier_annotation = Model.Name "annotation"++_ClassModifier_public = Model.Name "public"++_ClassModifier_protected = Model.Name "protected"++_ClassModifier_private = Model.Name "private"++_ClassModifier_abstract = Model.Name "abstract"++_ClassModifier_static = Model.Name "static"++_ClassModifier_final = Model.Name "final"++_ClassModifier_sealed = Model.Name "sealed"++_ClassModifier_nonSealed = Model.Name "nonSealed"++_ClassModifier_strictfp = Model.Name "strictfp"++newtype ClassBody =+  ClassBody {+    unClassBody :: [ClassBodyDeclarationWithComments]}+  deriving (Eq, Ord, Read, Show)++_ClassBody = Model.Name "hydra.java.syntax.ClassBody"++data ClassBodyDeclaration =+  ClassBodyDeclarationClassMember ClassMemberDeclaration |+  ClassBodyDeclarationInstanceInitializer InstanceInitializer |+  ClassBodyDeclarationStaticInitializer StaticInitializer |+  ClassBodyDeclarationConstructorDeclaration ConstructorDeclaration+  deriving (Eq, Ord, Read, Show)++_ClassBodyDeclaration = Model.Name "hydra.java.syntax.ClassBodyDeclaration"++_ClassBodyDeclaration_classMember = Model.Name "classMember"++_ClassBodyDeclaration_instanceInitializer = Model.Name "instanceInitializer"++_ClassBodyDeclaration_staticInitializer = Model.Name "staticInitializer"++_ClassBodyDeclaration_constructorDeclaration = Model.Name "constructorDeclaration"++data ClassBodyDeclarationWithComments =+  ClassBodyDeclarationWithComments {+    classBodyDeclarationWithCommentsValue :: ClassBodyDeclaration,+    classBodyDeclarationWithCommentsComments :: (Maybe String)}+  deriving (Eq, Ord, Read, Show)++_ClassBodyDeclarationWithComments = Model.Name "hydra.java.syntax.ClassBodyDeclarationWithComments"++_ClassBodyDeclarationWithComments_value = Model.Name "value"++_ClassBodyDeclarationWithComments_comments = Model.Name "comments"++data ClassMemberDeclaration =+  ClassMemberDeclarationField FieldDeclaration |+  ClassMemberDeclarationMethod MethodDeclaration |+  ClassMemberDeclarationClass ClassDeclaration |+  ClassMemberDeclarationInterface InterfaceDeclaration |+  ClassMemberDeclarationNone+  deriving (Eq, Ord, Read, Show)++_ClassMemberDeclaration = Model.Name "hydra.java.syntax.ClassMemberDeclaration"++_ClassMemberDeclaration_field = Model.Name "field"++_ClassMemberDeclaration_method = Model.Name "method"++_ClassMemberDeclaration_class = Model.Name "class"++_ClassMemberDeclaration_interface = Model.Name "interface"++_ClassMemberDeclaration_none = Model.Name "none"++data FieldDeclaration =+  FieldDeclaration {+    fieldDeclarationModifiers :: [FieldModifier],+    fieldDeclarationUnannType :: UnannType,+    fieldDeclarationVariableDeclarators :: [VariableDeclarator]}+  deriving (Eq, Ord, Read, Show)++_FieldDeclaration = Model.Name "hydra.java.syntax.FieldDeclaration"++_FieldDeclaration_modifiers = Model.Name "modifiers"++_FieldDeclaration_unannType = Model.Name "unannType"++_FieldDeclaration_variableDeclarators = Model.Name "variableDeclarators"++data FieldModifier =+  FieldModifierAnnotation Annotation |+  FieldModifierPublic |+  FieldModifierProtected |+  FieldModifierPrivate |+  FieldModifierStatic |+  FieldModifierFinal |+  FieldModifierTransient |+  FieldModifierVolatile+  deriving (Eq, Ord, Read, Show)++_FieldModifier = Model.Name "hydra.java.syntax.FieldModifier"++_FieldModifier_annotation = Model.Name "annotation"++_FieldModifier_public = Model.Name "public"++_FieldModifier_protected = Model.Name "protected"++_FieldModifier_private = Model.Name "private"++_FieldModifier_static = Model.Name "static"++_FieldModifier_final = Model.Name "final"++_FieldModifier_transient = Model.Name "transient"++_FieldModifier_volatile = Model.Name "volatile"++data VariableDeclarator =+  VariableDeclarator {+    variableDeclaratorId :: VariableDeclaratorId,+    variableDeclaratorInitializer :: (Maybe VariableInitializer)}+  deriving (Eq, Ord, Read, Show)++_VariableDeclarator = Model.Name "hydra.java.syntax.VariableDeclarator"++_VariableDeclarator_id = Model.Name "id"++_VariableDeclarator_initializer = Model.Name "initializer"++data VariableDeclaratorId =+  VariableDeclaratorId {+    variableDeclaratorIdIdentifier :: Identifier,+    variableDeclaratorIdDims :: (Maybe Dims)}+  deriving (Eq, Ord, Read, Show)++_VariableDeclaratorId = Model.Name "hydra.java.syntax.VariableDeclaratorId"++_VariableDeclaratorId_identifier = Model.Name "identifier"++_VariableDeclaratorId_dims = Model.Name "dims"++data VariableInitializer =+  VariableInitializerExpression Expression |+  VariableInitializerArrayInitializer ArrayInitializer+  deriving (Eq, Ord, Read, Show)++_VariableInitializer = Model.Name "hydra.java.syntax.VariableInitializer"++_VariableInitializer_expression = Model.Name "expression"++_VariableInitializer_arrayInitializer = Model.Name "arrayInitializer"++-- | A Type which does not allow annotations+newtype UnannType =+  UnannType {+    unUnannType :: Type}+  deriving (Eq, Ord, Read, Show)++_UnannType = Model.Name "hydra.java.syntax.UnannType"++-- | A ClassType which does not allow annotations+newtype UnannClassType =+  UnannClassType {+    unUnannClassType :: ClassType}+  deriving (Eq, Ord, Read, Show)++_UnannClassType = Model.Name "hydra.java.syntax.UnannClassType"++data MethodDeclaration =+  MethodDeclaration {+    -- | Note: simple methods cannot have annotations+    methodDeclarationAnnotations :: [Annotation],+    methodDeclarationModifiers :: [MethodModifier],+    methodDeclarationHeader :: MethodHeader,+    methodDeclarationBody :: MethodBody}+  deriving (Eq, Ord, Read, Show)++_MethodDeclaration = Model.Name "hydra.java.syntax.MethodDeclaration"++_MethodDeclaration_annotations = Model.Name "annotations"++_MethodDeclaration_modifiers = Model.Name "modifiers"++_MethodDeclaration_header = Model.Name "header"++_MethodDeclaration_body = Model.Name "body"++data MethodModifier =+  MethodModifierAnnotation Annotation |+  MethodModifierPublic |+  MethodModifierProtected |+  MethodModifierPrivate |+  MethodModifierAbstract |+  MethodModifierStatic |+  MethodModifierFinal |+  MethodModifierSynchronized |+  MethodModifierNative |+  MethodModifierStrictfp+  deriving (Eq, Ord, Read, Show)++_MethodModifier = Model.Name "hydra.java.syntax.MethodModifier"++_MethodModifier_annotation = Model.Name "annotation"++_MethodModifier_public = Model.Name "public"++_MethodModifier_protected = Model.Name "protected"++_MethodModifier_private = Model.Name "private"++_MethodModifier_abstract = Model.Name "abstract"++_MethodModifier_static = Model.Name "static"++_MethodModifier_final = Model.Name "final"++_MethodModifier_synchronized = Model.Name "synchronized"++_MethodModifier_native = Model.Name "native"++_MethodModifier_strictfp = Model.Name "strictfp"++data MethodHeader =+  MethodHeader {+    methodHeaderParameters :: [TypeParameter],+    methodHeaderResult :: Result,+    methodHeaderDeclarator :: MethodDeclarator,+    methodHeaderThrows :: (Maybe Throws)}+  deriving (Eq, Ord, Read, Show)++_MethodHeader = Model.Name "hydra.java.syntax.MethodHeader"++_MethodHeader_parameters = Model.Name "parameters"++_MethodHeader_result = Model.Name "result"++_MethodHeader_declarator = Model.Name "declarator"++_MethodHeader_throws = Model.Name "throws"++data Result =+  ResultType UnannType |+  ResultVoid+  deriving (Eq, Ord, Read, Show)++_Result = Model.Name "hydra.java.syntax.Result"++_Result_type = Model.Name "type"++_Result_void = Model.Name "void"++data MethodDeclarator =+  MethodDeclarator {+    methodDeclaratorIdentifier :: Identifier,+    methodDeclaratorReceiverParameter :: (Maybe ReceiverParameter),+    methodDeclaratorFormalParameters :: [FormalParameter]}+  deriving (Eq, Ord, Read, Show)++_MethodDeclarator = Model.Name "hydra.java.syntax.MethodDeclarator"++_MethodDeclarator_identifier = Model.Name "identifier"++_MethodDeclarator_receiverParameter = Model.Name "receiverParameter"++_MethodDeclarator_formalParameters = Model.Name "formalParameters"++data ReceiverParameter =+  ReceiverParameter {+    receiverParameterAnnotations :: [Annotation],+    receiverParameterUnannType :: UnannType,+    receiverParameterIdentifier :: (Maybe Identifier)}+  deriving (Eq, Ord, Read, Show)++_ReceiverParameter = Model.Name "hydra.java.syntax.ReceiverParameter"++_ReceiverParameter_annotations = Model.Name "annotations"++_ReceiverParameter_unannType = Model.Name "unannType"++_ReceiverParameter_identifier = Model.Name "identifier"++data FormalParameter =+  FormalParameterSimple FormalParameter_Simple |+  FormalParameterVariableArity VariableArityParameter+  deriving (Eq, Ord, Read, Show)++_FormalParameter = Model.Name "hydra.java.syntax.FormalParameter"++_FormalParameter_simple = Model.Name "simple"++_FormalParameter_variableArity = Model.Name "variableArity"++data FormalParameter_Simple =+  FormalParameter_Simple {+    formalParameter_SimpleModifiers :: [VariableModifier],+    formalParameter_SimpleType :: UnannType,+    formalParameter_SimpleId :: VariableDeclaratorId}+  deriving (Eq, Ord, Read, Show)++_FormalParameter_Simple = Model.Name "hydra.java.syntax.FormalParameter_Simple"++_FormalParameter_Simple_modifiers = Model.Name "modifiers"++_FormalParameter_Simple_type = Model.Name "type"++_FormalParameter_Simple_id = Model.Name "id"++data VariableArityParameter =+  VariableArityParameter {+    variableArityParameterModifiers :: [VariableModifier],+    variableArityParameterType :: UnannType,+    variableArityParameterAnnotations :: [Annotation],+    variableArityParameterIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_VariableArityParameter = Model.Name "hydra.java.syntax.VariableArityParameter"++_VariableArityParameter_modifiers = Model.Name "modifiers"++_VariableArityParameter_type = Model.Name "type"++_VariableArityParameter_annotations = Model.Name "annotations"++_VariableArityParameter_identifier = Model.Name "identifier"++data VariableModifier =+  VariableModifierAnnotation Annotation |+  VariableModifierFinal+  deriving (Eq, Ord, Read, Show)++_VariableModifier = Model.Name "hydra.java.syntax.VariableModifier"++_VariableModifier_annotation = Model.Name "annotation"++_VariableModifier_final = Model.Name "final"++newtype Throws =+  Throws {+    unThrows :: [ExceptionType]}+  deriving (Eq, Ord, Read, Show)++_Throws = Model.Name "hydra.java.syntax.Throws"++data ExceptionType =+  ExceptionTypeClass ClassType |+  ExceptionTypeVariable TypeVariable+  deriving (Eq, Ord, Read, Show)++_ExceptionType = Model.Name "hydra.java.syntax.ExceptionType"++_ExceptionType_class = Model.Name "class"++_ExceptionType_variable = Model.Name "variable"++data MethodBody =+  MethodBodyBlock Block |+  MethodBodyNone+  deriving (Eq, Ord, Read, Show)++_MethodBody = Model.Name "hydra.java.syntax.MethodBody"++_MethodBody_block = Model.Name "block"++_MethodBody_none = Model.Name "none"++newtype InstanceInitializer =+  InstanceInitializer {+    unInstanceInitializer :: Block}+  deriving (Eq, Ord, Read, Show)++_InstanceInitializer = Model.Name "hydra.java.syntax.InstanceInitializer"++newtype StaticInitializer =+  StaticInitializer {+    unStaticInitializer :: Block}+  deriving (Eq, Ord, Read, Show)++_StaticInitializer = Model.Name "hydra.java.syntax.StaticInitializer"++data ConstructorDeclaration =+  ConstructorDeclaration {+    constructorDeclarationModifiers :: [ConstructorModifier],+    constructorDeclarationConstructor :: ConstructorDeclarator,+    constructorDeclarationThrows :: (Maybe Throws),+    constructorDeclarationBody :: ConstructorBody}+  deriving (Eq, Ord, Read, Show)++_ConstructorDeclaration = Model.Name "hydra.java.syntax.ConstructorDeclaration"++_ConstructorDeclaration_modifiers = Model.Name "modifiers"++_ConstructorDeclaration_constructor = Model.Name "constructor"++_ConstructorDeclaration_throws = Model.Name "throws"++_ConstructorDeclaration_body = Model.Name "body"++data ConstructorModifier =+  ConstructorModifierAnnotation Annotation |+  ConstructorModifierPublic |+  ConstructorModifierProtected |+  ConstructorModifierPrivate+  deriving (Eq, Ord, Read, Show)++_ConstructorModifier = Model.Name "hydra.java.syntax.ConstructorModifier"++_ConstructorModifier_annotation = Model.Name "annotation"++_ConstructorModifier_public = Model.Name "public"++_ConstructorModifier_protected = Model.Name "protected"++_ConstructorModifier_private = Model.Name "private"++data ConstructorDeclarator =+  ConstructorDeclarator {+    constructorDeclaratorParameters :: [TypeParameter],+    constructorDeclaratorName :: SimpleTypeName,+    constructorDeclaratorReceiverParameter :: (Maybe ReceiverParameter),+    constructorDeclaratorFormalParameters :: [FormalParameter]}+  deriving (Eq, Ord, Read, Show)++_ConstructorDeclarator = Model.Name "hydra.java.syntax.ConstructorDeclarator"++_ConstructorDeclarator_parameters = Model.Name "parameters"++_ConstructorDeclarator_name = Model.Name "name"++_ConstructorDeclarator_receiverParameter = Model.Name "receiverParameter"++_ConstructorDeclarator_formalParameters = Model.Name "formalParameters"++newtype SimpleTypeName =+  SimpleTypeName {+    unSimpleTypeName :: TypeIdentifier}+  deriving (Eq, Ord, Read, Show)++_SimpleTypeName = Model.Name "hydra.java.syntax.SimpleTypeName"++data ConstructorBody =+  ConstructorBody {+    constructorBodyInvocation :: (Maybe ExplicitConstructorInvocation),+    constructorBodyStatements :: [BlockStatement]}+  deriving (Eq, Ord, Read, Show)++_ConstructorBody = Model.Name "hydra.java.syntax.ConstructorBody"++_ConstructorBody_invocation = Model.Name "invocation"++_ConstructorBody_statements = Model.Name "statements"++data ExplicitConstructorInvocation =+  ExplicitConstructorInvocation {+    explicitConstructorInvocationTypeArguments :: [TypeArgument],+    explicitConstructorInvocationArguments :: [Expression],+    explicitConstructorInvocationVariant :: ExplicitConstructorInvocation_Variant}+  deriving (Eq, Ord, Read, Show)++_ExplicitConstructorInvocation = Model.Name "hydra.java.syntax.ExplicitConstructorInvocation"++_ExplicitConstructorInvocation_typeArguments = Model.Name "typeArguments"++_ExplicitConstructorInvocation_arguments = Model.Name "arguments"++_ExplicitConstructorInvocation_variant = Model.Name "variant"++data ExplicitConstructorInvocation_Variant =+  ExplicitConstructorInvocation_VariantThis |+  ExplicitConstructorInvocation_VariantSuper (Maybe ExpressionName) |+  ExplicitConstructorInvocation_VariantPrimary Primary+  deriving (Eq, Ord, Read, Show)++_ExplicitConstructorInvocation_Variant = Model.Name "hydra.java.syntax.ExplicitConstructorInvocation_Variant"++_ExplicitConstructorInvocation_Variant_this = Model.Name "this"++_ExplicitConstructorInvocation_Variant_super = Model.Name "super"++_ExplicitConstructorInvocation_Variant_primary = Model.Name "primary"++data EnumDeclaration =+  EnumDeclaration {+    enumDeclarationModifiers :: [ClassModifier],+    enumDeclarationIdentifier :: TypeIdentifier,+    enumDeclarationImplements :: [InterfaceType],+    enumDeclarationBody :: EnumBody}+  deriving (Eq, Ord, Read, Show)++_EnumDeclaration = Model.Name "hydra.java.syntax.EnumDeclaration"++_EnumDeclaration_modifiers = Model.Name "modifiers"++_EnumDeclaration_identifier = Model.Name "identifier"++_EnumDeclaration_implements = Model.Name "implements"++_EnumDeclaration_body = Model.Name "body"++newtype EnumBody =+  EnumBody {+    unEnumBody :: [EnumBody_Element]}+  deriving (Eq, Ord, Read, Show)++_EnumBody = Model.Name "hydra.java.syntax.EnumBody"++data EnumBody_Element =+  EnumBody_Element {+    enumBody_ElementConstants :: [EnumConstant],+    enumBody_ElementBodyDeclarations :: [ClassBodyDeclaration]}+  deriving (Eq, Ord, Read, Show)++_EnumBody_Element = Model.Name "hydra.java.syntax.EnumBody_Element"++_EnumBody_Element_constants = Model.Name "constants"++_EnumBody_Element_bodyDeclarations = Model.Name "bodyDeclarations"++data EnumConstant =+  EnumConstant {+    enumConstantModifiers :: [EnumConstantModifier],+    enumConstantIdentifier :: Identifier,+    enumConstantArguments :: (Maybe [Expression]),+    enumConstantBody :: (Maybe ClassBody)}+  deriving (Eq, Ord, Read, Show)++_EnumConstant = Model.Name "hydra.java.syntax.EnumConstant"++_EnumConstant_modifiers = Model.Name "modifiers"++_EnumConstant_identifier = Model.Name "identifier"++_EnumConstant_arguments = Model.Name "arguments"++_EnumConstant_body = Model.Name "body"++newtype EnumConstantModifier =+  EnumConstantModifier {+    unEnumConstantModifier :: Annotation}+  deriving (Eq, Ord, Read, Show)++_EnumConstantModifier = Model.Name "hydra.java.syntax.EnumConstantModifier"++data RecordDeclaration =+  RecordDeclaration {+    recordDeclarationModifiers :: [ClassModifier],+    recordDeclarationIdentifier :: TypeIdentifier,+    recordDeclarationParameters :: [TypeParameter],+    recordDeclarationHeader :: RecordHeader,+    recordDeclarationImplements :: [InterfaceType],+    recordDeclarationBody :: RecordBody}+  deriving (Eq, Ord, Read, Show)++_RecordDeclaration = Model.Name "hydra.java.syntax.RecordDeclaration"++_RecordDeclaration_modifiers = Model.Name "modifiers"++_RecordDeclaration_identifier = Model.Name "identifier"++_RecordDeclaration_parameters = Model.Name "parameters"++_RecordDeclaration_header = Model.Name "header"++_RecordDeclaration_implements = Model.Name "implements"++_RecordDeclaration_body = Model.Name "body"++newtype RecordHeader =+  RecordHeader {+    unRecordHeader :: [RecordComponent]}+  deriving (Eq, Ord, Read, Show)++_RecordHeader = Model.Name "hydra.java.syntax.RecordHeader"++data RecordComponent =+  RecordComponentSimple RecordComponent_Simple |+  RecordComponentVariableArity VariableArityRecordComponent+  deriving (Eq, Ord, Read, Show)++_RecordComponent = Model.Name "hydra.java.syntax.RecordComponent"++_RecordComponent_simple = Model.Name "simple"++_RecordComponent_variableArity = Model.Name "variableArity"++data RecordComponent_Simple =+  RecordComponent_Simple {+    recordComponent_SimpleModifiers :: [RecordComponentModifier],+    recordComponent_SimpleType :: UnannType,+    recordComponent_SimpleIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_RecordComponent_Simple = Model.Name "hydra.java.syntax.RecordComponent_Simple"++_RecordComponent_Simple_modifiers = Model.Name "modifiers"++_RecordComponent_Simple_type = Model.Name "type"++_RecordComponent_Simple_identifier = Model.Name "identifier"++data VariableArityRecordComponent =+  VariableArityRecordComponent {+    variableArityRecordComponentModifiers :: [RecordComponentModifier],+    variableArityRecordComponentType :: UnannType,+    variableArityRecordComponentAnnotations :: [Annotation],+    variableArityRecordComponentIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_VariableArityRecordComponent = Model.Name "hydra.java.syntax.VariableArityRecordComponent"++_VariableArityRecordComponent_modifiers = Model.Name "modifiers"++_VariableArityRecordComponent_type = Model.Name "type"++_VariableArityRecordComponent_annotations = Model.Name "annotations"++_VariableArityRecordComponent_identifier = Model.Name "identifier"++newtype RecordComponentModifier =+  RecordComponentModifier {+    unRecordComponentModifier :: Annotation}+  deriving (Eq, Ord, Read, Show)++_RecordComponentModifier = Model.Name "hydra.java.syntax.RecordComponentModifier"++newtype RecordBody =+  RecordBody {+    unRecordBody :: [RecordBodyDeclaration]}+  deriving (Eq, Ord, Read, Show)++_RecordBody = Model.Name "hydra.java.syntax.RecordBody"++data RecordBodyDeclaration =+  RecordBodyDeclarationClassBody ClassBodyDeclaration |+  RecordBodyDeclarationCompactConstructor CompactConstructorDeclaration+  deriving (Eq, Ord, Read, Show)++_RecordBodyDeclaration = Model.Name "hydra.java.syntax.RecordBodyDeclaration"++_RecordBodyDeclaration_classBody = Model.Name "classBody"++_RecordBodyDeclaration_compactConstructor = Model.Name "compactConstructor"++data CompactConstructorDeclaration =+  CompactConstructorDeclaration {+    compactConstructorDeclarationModifiers :: [ConstructorModifier],+    compactConstructorDeclarationName :: SimpleTypeName,+    compactConstructorDeclarationBody :: ConstructorBody}+  deriving (Eq, Ord, Read, Show)++_CompactConstructorDeclaration = Model.Name "hydra.java.syntax.CompactConstructorDeclaration"++_CompactConstructorDeclaration_modifiers = Model.Name "modifiers"++_CompactConstructorDeclaration_name = Model.Name "name"++_CompactConstructorDeclaration_body = Model.Name "body"++data InterfaceDeclaration =+  InterfaceDeclarationNormalInterface NormalInterfaceDeclaration |+  InterfaceDeclarationAnnotationInterface AnnotationInterfaceDeclaration+  deriving (Eq, Ord, Read, Show)++_InterfaceDeclaration = Model.Name "hydra.java.syntax.InterfaceDeclaration"++_InterfaceDeclaration_normalInterface = Model.Name "normalInterface"++_InterfaceDeclaration_annotationInterface = Model.Name "annotationInterface"++data NormalInterfaceDeclaration =+  NormalInterfaceDeclaration {+    normalInterfaceDeclarationModifiers :: [InterfaceModifier],+    normalInterfaceDeclarationIdentifier :: TypeIdentifier,+    normalInterfaceDeclarationParameters :: [TypeParameter],+    normalInterfaceDeclarationExtends :: [InterfaceType],+    normalInterfaceDeclarationPermits :: [TypeName],+    normalInterfaceDeclarationBody :: InterfaceBody}+  deriving (Eq, Ord, Read, Show)++_NormalInterfaceDeclaration = Model.Name "hydra.java.syntax.NormalInterfaceDeclaration"++_NormalInterfaceDeclaration_modifiers = Model.Name "modifiers"++_NormalInterfaceDeclaration_identifier = Model.Name "identifier"++_NormalInterfaceDeclaration_parameters = Model.Name "parameters"++_NormalInterfaceDeclaration_extends = Model.Name "extends"++_NormalInterfaceDeclaration_permits = Model.Name "permits"++_NormalInterfaceDeclaration_body = Model.Name "body"++data InterfaceModifier =+  InterfaceModifierAnnotation Annotation |+  InterfaceModifierPublic |+  InterfaceModifierProtected |+  InterfaceModifierPrivate |+  InterfaceModifierAbstract |+  InterfaceModifierStatic |+  InterfaceModifierSealed |+  InterfaceModifierNonSealed |+  InterfaceModifierStrictfp+  deriving (Eq, Ord, Read, Show)++_InterfaceModifier = Model.Name "hydra.java.syntax.InterfaceModifier"++_InterfaceModifier_annotation = Model.Name "annotation"++_InterfaceModifier_public = Model.Name "public"++_InterfaceModifier_protected = Model.Name "protected"++_InterfaceModifier_private = Model.Name "private"++_InterfaceModifier_abstract = Model.Name "abstract"++_InterfaceModifier_static = Model.Name "static"++_InterfaceModifier_sealed = Model.Name "sealed"++_InterfaceModifier_nonSealed = Model.Name "nonSealed"++_InterfaceModifier_strictfp = Model.Name "strictfp"++newtype InterfaceBody =+  InterfaceBody {+    unInterfaceBody :: [InterfaceMemberDeclarationWithComments]}+  deriving (Eq, Ord, Read, Show)++_InterfaceBody = Model.Name "hydra.java.syntax.InterfaceBody"++data InterfaceMemberDeclaration =+  InterfaceMemberDeclarationConstant ConstantDeclaration |+  InterfaceMemberDeclarationInterfaceMethod InterfaceMethodDeclaration |+  InterfaceMemberDeclarationClass ClassDeclaration |+  InterfaceMemberDeclarationInterface InterfaceDeclaration+  deriving (Eq, Ord, Read, Show)++_InterfaceMemberDeclaration = Model.Name "hydra.java.syntax.InterfaceMemberDeclaration"++_InterfaceMemberDeclaration_constant = Model.Name "constant"++_InterfaceMemberDeclaration_interfaceMethod = Model.Name "interfaceMethod"++_InterfaceMemberDeclaration_class = Model.Name "class"++_InterfaceMemberDeclaration_interface = Model.Name "interface"++data InterfaceMemberDeclarationWithComments =+  InterfaceMemberDeclarationWithComments {+    interfaceMemberDeclarationWithCommentsValue :: InterfaceMemberDeclaration,+    interfaceMemberDeclarationWithCommentsComments :: (Maybe String)}+  deriving (Eq, Ord, Read, Show)++_InterfaceMemberDeclarationWithComments = Model.Name "hydra.java.syntax.InterfaceMemberDeclarationWithComments"++_InterfaceMemberDeclarationWithComments_value = Model.Name "value"++_InterfaceMemberDeclarationWithComments_comments = Model.Name "comments"++data ConstantDeclaration =+  ConstantDeclaration {+    constantDeclarationModifiers :: [ConstantModifier],+    constantDeclarationType :: UnannType,+    constantDeclarationVariables :: [VariableDeclarator]}+  deriving (Eq, Ord, Read, Show)++_ConstantDeclaration = Model.Name "hydra.java.syntax.ConstantDeclaration"++_ConstantDeclaration_modifiers = Model.Name "modifiers"++_ConstantDeclaration_type = Model.Name "type"++_ConstantDeclaration_variables = Model.Name "variables"++data ConstantModifier =+  ConstantModifierAnnotation Annotation |+  ConstantModifierPublic |+  ConstantModifierStatic |+  ConstantModifierFinal+  deriving (Eq, Ord, Read, Show)++_ConstantModifier = Model.Name "hydra.java.syntax.ConstantModifier"++_ConstantModifier_annotation = Model.Name "annotation"++_ConstantModifier_public = Model.Name "public"++_ConstantModifier_static = Model.Name "static"++_ConstantModifier_final = Model.Name "final"++data InterfaceMethodDeclaration =+  InterfaceMethodDeclaration {+    interfaceMethodDeclarationModifiers :: [InterfaceMethodModifier],+    interfaceMethodDeclarationHeader :: MethodHeader,+    interfaceMethodDeclarationBody :: MethodBody}+  deriving (Eq, Ord, Read, Show)++_InterfaceMethodDeclaration = Model.Name "hydra.java.syntax.InterfaceMethodDeclaration"++_InterfaceMethodDeclaration_modifiers = Model.Name "modifiers"++_InterfaceMethodDeclaration_header = Model.Name "header"++_InterfaceMethodDeclaration_body = Model.Name "body"++data InterfaceMethodModifier =+  InterfaceMethodModifierAnnotation Annotation |+  InterfaceMethodModifierPublic |+  InterfaceMethodModifierPrivate |+  InterfaceMethodModifierAbstract |+  InterfaceMethodModifierDefault |+  InterfaceMethodModifierStatic |+  InterfaceMethodModifierStrictfp+  deriving (Eq, Ord, Read, Show)++_InterfaceMethodModifier = Model.Name "hydra.java.syntax.InterfaceMethodModifier"++_InterfaceMethodModifier_annotation = Model.Name "annotation"++_InterfaceMethodModifier_public = Model.Name "public"++_InterfaceMethodModifier_private = Model.Name "private"++_InterfaceMethodModifier_abstract = Model.Name "abstract"++_InterfaceMethodModifier_default = Model.Name "default"++_InterfaceMethodModifier_static = Model.Name "static"++_InterfaceMethodModifier_strictfp = Model.Name "strictfp"++data AnnotationInterfaceDeclaration =+  AnnotationInterfaceDeclaration {+    annotationInterfaceDeclarationModifiers :: [InterfaceModifier],+    annotationInterfaceDeclarationIdentifier :: TypeIdentifier,+    annotationInterfaceDeclarationBody :: AnnotationInterfaceBody}+  deriving (Eq, Ord, Read, Show)++_AnnotationInterfaceDeclaration = Model.Name "hydra.java.syntax.AnnotationInterfaceDeclaration"++_AnnotationInterfaceDeclaration_modifiers = Model.Name "modifiers"++_AnnotationInterfaceDeclaration_identifier = Model.Name "identifier"++_AnnotationInterfaceDeclaration_body = Model.Name "body"++newtype AnnotationInterfaceBody =+  AnnotationInterfaceBody {+    unAnnotationInterfaceBody :: [AnnotationInterfaceMemberDeclaration]}+  deriving (Eq, Ord, Read, Show)++_AnnotationInterfaceBody = Model.Name "hydra.java.syntax.AnnotationInterfaceBody"++data AnnotationInterfaceMemberDeclaration =+  AnnotationInterfaceMemberDeclarationAnnotationInterface AnnotationInterfaceElementDeclaration |+  AnnotationInterfaceMemberDeclarationConstant ConstantDeclaration |+  AnnotationInterfaceMemberDeclarationClass ClassDeclaration |+  AnnotationInterfaceMemberDeclarationInterface InterfaceDeclaration+  deriving (Eq, Ord, Read, Show)++_AnnotationInterfaceMemberDeclaration = Model.Name "hydra.java.syntax.AnnotationInterfaceMemberDeclaration"++_AnnotationInterfaceMemberDeclaration_annotationInterface = Model.Name "annotationInterface"++_AnnotationInterfaceMemberDeclaration_constant = Model.Name "constant"++_AnnotationInterfaceMemberDeclaration_class = Model.Name "class"++_AnnotationInterfaceMemberDeclaration_interface = Model.Name "interface"++data AnnotationInterfaceElementDeclaration =+  AnnotationInterfaceElementDeclaration {+    annotationInterfaceElementDeclarationModifiers :: [AnnotationInterfaceElementModifier],+    annotationInterfaceElementDeclarationType :: UnannType,+    annotationInterfaceElementDeclarationIdentifier :: Identifier,+    annotationInterfaceElementDeclarationDims :: (Maybe Dims),+    annotationInterfaceElementDeclarationDefault :: (Maybe DefaultValue)}+  deriving (Eq, Ord, Read, Show)++_AnnotationInterfaceElementDeclaration = Model.Name "hydra.java.syntax.AnnotationInterfaceElementDeclaration"++_AnnotationInterfaceElementDeclaration_modifiers = Model.Name "modifiers"++_AnnotationInterfaceElementDeclaration_type = Model.Name "type"++_AnnotationInterfaceElementDeclaration_identifier = Model.Name "identifier"++_AnnotationInterfaceElementDeclaration_dims = Model.Name "dims"++_AnnotationInterfaceElementDeclaration_default = Model.Name "default"++data AnnotationInterfaceElementModifier =+  AnnotationInterfaceElementModifierAnnotation Annotation |+  AnnotationInterfaceElementModifierPublic |+  AnnotationInterfaceElementModifierAbstract+  deriving (Eq, Ord, Read, Show)++_AnnotationInterfaceElementModifier = Model.Name "hydra.java.syntax.AnnotationInterfaceElementModifier"++_AnnotationInterfaceElementModifier_annotation = Model.Name "annotation"++_AnnotationInterfaceElementModifier_public = Model.Name "public"++_AnnotationInterfaceElementModifier_abstract = Model.Name "abstract"++newtype DefaultValue =+  DefaultValue {+    unDefaultValue :: ElementValue}+  deriving (Eq, Ord, Read, Show)++_DefaultValue = Model.Name "hydra.java.syntax.DefaultValue"++data Annotation =+  AnnotationNormal NormalAnnotation |+  AnnotationMarker MarkerAnnotation |+  AnnotationSingleElement SingleElementAnnotation+  deriving (Eq, Ord, Read, Show)++_Annotation = Model.Name "hydra.java.syntax.Annotation"++_Annotation_normal = Model.Name "normal"++_Annotation_marker = Model.Name "marker"++_Annotation_singleElement = Model.Name "singleElement"++data NormalAnnotation =+  NormalAnnotation {+    normalAnnotationTypeName :: TypeName,+    normalAnnotationPairs :: [ElementValuePair]}+  deriving (Eq, Ord, Read, Show)++_NormalAnnotation = Model.Name "hydra.java.syntax.NormalAnnotation"++_NormalAnnotation_typeName = Model.Name "typeName"++_NormalAnnotation_pairs = Model.Name "pairs"++data ElementValuePair =+  ElementValuePair {+    elementValuePairKey :: Identifier,+    elementValuePairValue :: ElementValue}+  deriving (Eq, Ord, Read, Show)++_ElementValuePair = Model.Name "hydra.java.syntax.ElementValuePair"++_ElementValuePair_key = Model.Name "key"++_ElementValuePair_value = Model.Name "value"++data ElementValue =+  ElementValueConditionalExpression ConditionalExpression |+  ElementValueElementValueArrayInitializer ElementValueArrayInitializer |+  ElementValueAnnotation Annotation+  deriving (Eq, Ord, Read, Show)++_ElementValue = Model.Name "hydra.java.syntax.ElementValue"++_ElementValue_conditionalExpression = Model.Name "conditionalExpression"++_ElementValue_elementValueArrayInitializer = Model.Name "elementValueArrayInitializer"++_ElementValue_annotation = Model.Name "annotation"++newtype ElementValueArrayInitializer =+  ElementValueArrayInitializer {+    unElementValueArrayInitializer :: [ElementValue]}+  deriving (Eq, Ord, Read, Show)++_ElementValueArrayInitializer = Model.Name "hydra.java.syntax.ElementValueArrayInitializer"++newtype MarkerAnnotation =+  MarkerAnnotation {+    unMarkerAnnotation :: TypeName}+  deriving (Eq, Ord, Read, Show)++_MarkerAnnotation = Model.Name "hydra.java.syntax.MarkerAnnotation"++data SingleElementAnnotation =+  SingleElementAnnotation {+    singleElementAnnotationName :: TypeName,+    singleElementAnnotationValue :: (Maybe ElementValue)}+  deriving (Eq, Ord, Read, Show)++_SingleElementAnnotation = Model.Name "hydra.java.syntax.SingleElementAnnotation"++_SingleElementAnnotation_name = Model.Name "name"++_SingleElementAnnotation_value = Model.Name "value"++newtype ArrayInitializer =+  ArrayInitializer {+    unArrayInitializer :: [[VariableInitializer]]}+  deriving (Eq, Ord, Read, Show)++_ArrayInitializer = Model.Name "hydra.java.syntax.ArrayInitializer"++newtype Block =+  Block {+    unBlock :: [BlockStatement]}+  deriving (Eq, Ord, Read, Show)++_Block = Model.Name "hydra.java.syntax.Block"++data BlockStatement =+  BlockStatementLocalVariableDeclaration LocalVariableDeclarationStatement |+  BlockStatementLocalClassOrInterface LocalClassOrInterfaceDeclaration |+  BlockStatementStatement Statement+  deriving (Eq, Ord, Read, Show)++_BlockStatement = Model.Name "hydra.java.syntax.BlockStatement"++_BlockStatement_localVariableDeclaration = Model.Name "localVariableDeclaration"++_BlockStatement_localClassOrInterface = Model.Name "localClassOrInterface"++_BlockStatement_statement = Model.Name "statement"++data LocalClassOrInterfaceDeclaration =+  LocalClassOrInterfaceDeclarationClass ClassDeclaration |+  LocalClassOrInterfaceDeclarationNormalInterface NormalInterfaceDeclaration+  deriving (Eq, Ord, Read, Show)++_LocalClassOrInterfaceDeclaration = Model.Name "hydra.java.syntax.LocalClassOrInterfaceDeclaration"++_LocalClassOrInterfaceDeclaration_class = Model.Name "class"++_LocalClassOrInterfaceDeclaration_normalInterface = Model.Name "normalInterface"++newtype LocalVariableDeclarationStatement =+  LocalVariableDeclarationStatement {+    unLocalVariableDeclarationStatement :: LocalVariableDeclaration}+  deriving (Eq, Ord, Read, Show)++_LocalVariableDeclarationStatement = Model.Name "hydra.java.syntax.LocalVariableDeclarationStatement"++data LocalVariableDeclaration =+  LocalVariableDeclaration {+    localVariableDeclarationModifiers :: [VariableModifier],+    localVariableDeclarationType :: LocalVariableType,+    localVariableDeclarationDeclarators :: [VariableDeclarator]}+  deriving (Eq, Ord, Read, Show)++_LocalVariableDeclaration = Model.Name "hydra.java.syntax.LocalVariableDeclaration"++_LocalVariableDeclaration_modifiers = Model.Name "modifiers"++_LocalVariableDeclaration_type = Model.Name "type"++_LocalVariableDeclaration_declarators = Model.Name "declarators"++data LocalVariableType =+  LocalVariableTypeType UnannType |+  LocalVariableTypeVar+  deriving (Eq, Ord, Read, Show)++_LocalVariableType = Model.Name "hydra.java.syntax.LocalVariableType"++_LocalVariableType_type = Model.Name "type"++_LocalVariableType_var = Model.Name "var"++data Statement =+  StatementWithoutTrailing StatementWithoutTrailingSubstatement |+  StatementLabeled LabeledStatement |+  StatementIfThen IfThenStatement |+  StatementIfThenElse IfThenElseStatement |+  StatementWhile WhileStatement |+  StatementFor ForStatement+  deriving (Eq, Ord, Read, Show)++_Statement = Model.Name "hydra.java.syntax.Statement"++_Statement_withoutTrailing = Model.Name "withoutTrailing"++_Statement_labeled = Model.Name "labeled"++_Statement_ifThen = Model.Name "ifThen"++_Statement_ifThenElse = Model.Name "ifThenElse"++_Statement_while = Model.Name "while"++_Statement_for = Model.Name "for"++data StatementNoShortIf =+  StatementNoShortIfWithoutTrailing StatementWithoutTrailingSubstatement |+  StatementNoShortIfLabeled LabeledStatementNoShortIf |+  StatementNoShortIfIfThenElse IfThenElseStatementNoShortIf |+  StatementNoShortIfWhile WhileStatementNoShortIf |+  StatementNoShortIfFor ForStatementNoShortIf+  deriving (Eq, Ord, Read, Show)++_StatementNoShortIf = Model.Name "hydra.java.syntax.StatementNoShortIf"++_StatementNoShortIf_withoutTrailing = Model.Name "withoutTrailing"++_StatementNoShortIf_labeled = Model.Name "labeled"++_StatementNoShortIf_ifThenElse = Model.Name "ifThenElse"++_StatementNoShortIf_while = Model.Name "while"++_StatementNoShortIf_for = Model.Name "for"++data StatementWithoutTrailingSubstatement =+  StatementWithoutTrailingSubstatementBlock Block |+  StatementWithoutTrailingSubstatementEmpty |+  StatementWithoutTrailingSubstatementExpression ExpressionStatement |+  StatementWithoutTrailingSubstatementAssert AssertStatement |+  StatementWithoutTrailingSubstatementSwitch SwitchStatement |+  StatementWithoutTrailingSubstatementDo DoStatement |+  StatementWithoutTrailingSubstatementBreak BreakStatement |+  StatementWithoutTrailingSubstatementContinue ContinueStatement |+  StatementWithoutTrailingSubstatementReturn ReturnStatement |+  StatementWithoutTrailingSubstatementSynchronized SynchronizedStatement |+  StatementWithoutTrailingSubstatementThrow ThrowStatement |+  StatementWithoutTrailingSubstatementTry TryStatement |+  StatementWithoutTrailingSubstatementYield YieldStatement+  deriving (Eq, Ord, Read, Show)++_StatementWithoutTrailingSubstatement = Model.Name "hydra.java.syntax.StatementWithoutTrailingSubstatement"++_StatementWithoutTrailingSubstatement_block = Model.Name "block"++_StatementWithoutTrailingSubstatement_empty = Model.Name "empty"++_StatementWithoutTrailingSubstatement_expression = Model.Name "expression"++_StatementWithoutTrailingSubstatement_assert = Model.Name "assert"++_StatementWithoutTrailingSubstatement_switch = Model.Name "switch"++_StatementWithoutTrailingSubstatement_do = Model.Name "do"++_StatementWithoutTrailingSubstatement_break = Model.Name "break"++_StatementWithoutTrailingSubstatement_continue = Model.Name "continue"++_StatementWithoutTrailingSubstatement_return = Model.Name "return"++_StatementWithoutTrailingSubstatement_synchronized = Model.Name "synchronized"++_StatementWithoutTrailingSubstatement_throw = Model.Name "throw"++_StatementWithoutTrailingSubstatement_try = Model.Name "try"++_StatementWithoutTrailingSubstatement_yield = Model.Name "yield"++data LabeledStatement =+  LabeledStatement {+    labeledStatementIdentifier :: Identifier,+    labeledStatementStatement :: Statement}+  deriving (Eq, Ord, Read, Show)++_LabeledStatement = Model.Name "hydra.java.syntax.LabeledStatement"++_LabeledStatement_identifier = Model.Name "identifier"++_LabeledStatement_statement = Model.Name "statement"++data LabeledStatementNoShortIf =+  LabeledStatementNoShortIf {+    labeledStatementNoShortIfIdentifier :: Identifier,+    labeledStatementNoShortIfStatement :: StatementNoShortIf}+  deriving (Eq, Ord, Read, Show)++_LabeledStatementNoShortIf = Model.Name "hydra.java.syntax.LabeledStatementNoShortIf"++_LabeledStatementNoShortIf_identifier = Model.Name "identifier"++_LabeledStatementNoShortIf_statement = Model.Name "statement"++newtype ExpressionStatement =+  ExpressionStatement {+    unExpressionStatement :: StatementExpression}+  deriving (Eq, Ord, Read, Show)++_ExpressionStatement = Model.Name "hydra.java.syntax.ExpressionStatement"++data StatementExpression =+  StatementExpressionAssignment Assignment |+  StatementExpressionPreIncrement PreIncrementExpression |+  StatementExpressionPreDecrement PreDecrementExpression |+  StatementExpressionPostIncrement PostIncrementExpression |+  StatementExpressionPostDecrement PostDecrementExpression |+  StatementExpressionMethodInvocation MethodInvocation |+  StatementExpressionClassInstanceCreation ClassInstanceCreationExpression+  deriving (Eq, Ord, Read, Show)++_StatementExpression = Model.Name "hydra.java.syntax.StatementExpression"++_StatementExpression_assignment = Model.Name "assignment"++_StatementExpression_preIncrement = Model.Name "preIncrement"++_StatementExpression_preDecrement = Model.Name "preDecrement"++_StatementExpression_postIncrement = Model.Name "postIncrement"++_StatementExpression_postDecrement = Model.Name "postDecrement"++_StatementExpression_methodInvocation = Model.Name "methodInvocation"++_StatementExpression_classInstanceCreation = Model.Name "classInstanceCreation"++data IfThenStatement =+  IfThenStatement {+    ifThenStatementExpression :: Expression,+    ifThenStatementStatement :: Statement}+  deriving (Eq, Ord, Read, Show)++_IfThenStatement = Model.Name "hydra.java.syntax.IfThenStatement"++_IfThenStatement_expression = Model.Name "expression"++_IfThenStatement_statement = Model.Name "statement"++data IfThenElseStatement =+  IfThenElseStatement {+    ifThenElseStatementCond :: (Maybe Expression),+    ifThenElseStatementThen :: StatementNoShortIf,+    ifThenElseStatementElse :: Statement}+  deriving (Eq, Ord, Read, Show)++_IfThenElseStatement = Model.Name "hydra.java.syntax.IfThenElseStatement"++_IfThenElseStatement_cond = Model.Name "cond"++_IfThenElseStatement_then = Model.Name "then"++_IfThenElseStatement_else = Model.Name "else"++data IfThenElseStatementNoShortIf =+  IfThenElseStatementNoShortIf {+    ifThenElseStatementNoShortIfCond :: (Maybe Expression),+    ifThenElseStatementNoShortIfThen :: StatementNoShortIf,+    ifThenElseStatementNoShortIfElse :: StatementNoShortIf}+  deriving (Eq, Ord, Read, Show)++_IfThenElseStatementNoShortIf = Model.Name "hydra.java.syntax.IfThenElseStatementNoShortIf"++_IfThenElseStatementNoShortIf_cond = Model.Name "cond"++_IfThenElseStatementNoShortIf_then = Model.Name "then"++_IfThenElseStatementNoShortIf_else = Model.Name "else"++data AssertStatement =+  AssertStatementSingle Expression |+  AssertStatementPair AssertStatement_Pair+  deriving (Eq, Ord, Read, Show)++_AssertStatement = Model.Name "hydra.java.syntax.AssertStatement"++_AssertStatement_single = Model.Name "single"++_AssertStatement_pair = Model.Name "pair"++data AssertStatement_Pair =+  AssertStatement_Pair {+    assertStatement_PairFirst :: Expression,+    assertStatement_PairSecond :: Expression}+  deriving (Eq, Ord, Read, Show)++_AssertStatement_Pair = Model.Name "hydra.java.syntax.AssertStatement_Pair"++_AssertStatement_Pair_first = Model.Name "first"++_AssertStatement_Pair_second = Model.Name "second"++data SwitchStatement =+  SwitchStatement {+    switchStatementCond :: Expression,+    switchStatementBlock :: SwitchBlock}+  deriving (Eq, Ord, Read, Show)++_SwitchStatement = Model.Name "hydra.java.syntax.SwitchStatement"++_SwitchStatement_cond = Model.Name "cond"++_SwitchStatement_block = Model.Name "block"++data SwitchBlock =+  SwitchBlockRules [SwitchRule] |+  SwitchBlockLegacy SwitchBlock_Legacy+  deriving (Eq, Ord, Read, Show)++_SwitchBlock = Model.Name "hydra.java.syntax.SwitchBlock"++_SwitchBlock_rules = Model.Name "rules"++_SwitchBlock_legacy = Model.Name "legacy"++data SwitchBlock_Legacy =+  SwitchBlock_Legacy {+    switchBlock_LegacyGroups :: [SwitchBlockStatementGroup],+    switchBlock_LegacyTrailingLabels :: [SwitchLabel]}+  deriving (Eq, Ord, Read, Show)++_SwitchBlock_Legacy = Model.Name "hydra.java.syntax.SwitchBlock_Legacy"++_SwitchBlock_Legacy_groups = Model.Name "groups"++_SwitchBlock_Legacy_trailingLabels = Model.Name "trailingLabels"++data SwitchRule =+  SwitchRule {+    switchRuleLabel :: SwitchLabel,+    switchRuleBody :: SwitchRule_Body}+  deriving (Eq, Ord, Read, Show)++_SwitchRule = Model.Name "hydra.java.syntax.SwitchRule"++_SwitchRule_label = Model.Name "label"++_SwitchRule_body = Model.Name "body"++data SwitchRule_Body =+  SwitchRule_BodyExpression Expression |+  SwitchRule_BodyBlock Block |+  SwitchRule_BodyThrow ThrowStatement+  deriving (Eq, Ord, Read, Show)++_SwitchRule_Body = Model.Name "hydra.java.syntax.SwitchRule_Body"++_SwitchRule_Body_expression = Model.Name "expression"++_SwitchRule_Body_block = Model.Name "block"++_SwitchRule_Body_throw = Model.Name "throw"++data SwitchBlockStatementGroup =+  SwitchBlockStatementGroup {+    switchBlockStatementGroupLabels :: [SwitchLabel],+    switchBlockStatementGroupStatements :: [BlockStatement]}+  deriving (Eq, Ord, Read, Show)++_SwitchBlockStatementGroup = Model.Name "hydra.java.syntax.SwitchBlockStatementGroup"++_SwitchBlockStatementGroup_labels = Model.Name "labels"++_SwitchBlockStatementGroup_statements = Model.Name "statements"++data SwitchLabel =+  SwitchLabelCase [CaseConstant] |+  SwitchLabelNull Bool |+  SwitchLabelCasePattern CasePattern |+  SwitchLabelDefault+  deriving (Eq, Ord, Read, Show)++_SwitchLabel = Model.Name "hydra.java.syntax.SwitchLabel"++_SwitchLabel_case = Model.Name "case"++_SwitchLabel_null = Model.Name "null"++_SwitchLabel_casePattern = Model.Name "casePattern"++_SwitchLabel_default = Model.Name "default"++newtype CaseConstant =+  CaseConstant {+    unCaseConstant :: ConditionalExpression}+  deriving (Eq, Ord, Read, Show)++_CaseConstant = Model.Name "hydra.java.syntax.CaseConstant"++data CasePattern =+  CasePattern {+    casePatternPattern :: Pattern,+    casePatternGuard :: (Maybe Guard)}+  deriving (Eq, Ord, Read, Show)++_CasePattern = Model.Name "hydra.java.syntax.CasePattern"++_CasePattern_pattern = Model.Name "pattern"++_CasePattern_guard = Model.Name "guard"++newtype Guard =+  Guard {+    unGuard :: Expression}+  deriving (Eq, Ord, Read, Show)++_Guard = Model.Name "hydra.java.syntax.Guard"++data Pattern =+  PatternType TypePattern |+  PatternRecord RecordPattern+  deriving (Eq, Ord, Read, Show)++_Pattern = Model.Name "hydra.java.syntax.Pattern"++_Pattern_type = Model.Name "type"++_Pattern_record = Model.Name "record"++newtype TypePattern =+  TypePattern {+    unTypePattern :: LocalVariableDeclaration}+  deriving (Eq, Ord, Read, Show)++_TypePattern = Model.Name "hydra.java.syntax.TypePattern"++data RecordPattern =+  RecordPattern {+    recordPatternType :: ReferenceType,+    recordPatternPatterns :: [Pattern]}+  deriving (Eq, Ord, Read, Show)++_RecordPattern = Model.Name "hydra.java.syntax.RecordPattern"++_RecordPattern_type = Model.Name "type"++_RecordPattern_patterns = Model.Name "patterns"++data WhileStatement =+  WhileStatement {+    whileStatementCond :: (Maybe Expression),+    whileStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_WhileStatement = Model.Name "hydra.java.syntax.WhileStatement"++_WhileStatement_cond = Model.Name "cond"++_WhileStatement_body = Model.Name "body"++data WhileStatementNoShortIf =+  WhileStatementNoShortIf {+    whileStatementNoShortIfCond :: (Maybe Expression),+    whileStatementNoShortIfBody :: StatementNoShortIf}+  deriving (Eq, Ord, Read, Show)++_WhileStatementNoShortIf = Model.Name "hydra.java.syntax.WhileStatementNoShortIf"++_WhileStatementNoShortIf_cond = Model.Name "cond"++_WhileStatementNoShortIf_body = Model.Name "body"++data DoStatement =+  DoStatement {+    doStatementBody :: Statement,+    doStatementCond :: Expression}+  deriving (Eq, Ord, Read, Show)++_DoStatement = Model.Name "hydra.java.syntax.DoStatement"++_DoStatement_body = Model.Name "body"++_DoStatement_cond = Model.Name "cond"++data ForStatement =+  ForStatementBasic BasicForStatement |+  ForStatementEnhanced EnhancedForStatement+  deriving (Eq, Ord, Read, Show)++_ForStatement = Model.Name "hydra.java.syntax.ForStatement"++_ForStatement_basic = Model.Name "basic"++_ForStatement_enhanced = Model.Name "enhanced"++data ForStatementNoShortIf =+  ForStatementNoShortIfBasic BasicForStatementNoShortIf |+  ForStatementNoShortIfEnhanced EnhancedForStatementNoShortIf+  deriving (Eq, Ord, Read, Show)++_ForStatementNoShortIf = Model.Name "hydra.java.syntax.ForStatementNoShortIf"++_ForStatementNoShortIf_basic = Model.Name "basic"++_ForStatementNoShortIf_enhanced = Model.Name "enhanced"++data BasicForStatement =+  BasicForStatement {+    basicForStatementCond :: ForCond,+    basicForStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_BasicForStatement = Model.Name "hydra.java.syntax.BasicForStatement"++_BasicForStatement_cond = Model.Name "cond"++_BasicForStatement_body = Model.Name "body"++data ForCond =+  ForCond {+    forCondInit :: (Maybe ForInit),+    forCondCond :: (Maybe Expression),+    forCondUpdate :: (Maybe ForUpdate)}+  deriving (Eq, Ord, Read, Show)++_ForCond = Model.Name "hydra.java.syntax.ForCond"++_ForCond_init = Model.Name "init"++_ForCond_cond = Model.Name "cond"++_ForCond_update = Model.Name "update"++data BasicForStatementNoShortIf =+  BasicForStatementNoShortIf {+    basicForStatementNoShortIfCond :: ForCond,+    basicForStatementNoShortIfBody :: StatementNoShortIf}+  deriving (Eq, Ord, Read, Show)++_BasicForStatementNoShortIf = Model.Name "hydra.java.syntax.BasicForStatementNoShortIf"++_BasicForStatementNoShortIf_cond = Model.Name "cond"++_BasicForStatementNoShortIf_body = Model.Name "body"++data ForInit =+  ForInitStatements [StatementExpression] |+  ForInitLocalVariable LocalVariableDeclaration+  deriving (Eq, Ord, Read, Show)++_ForInit = Model.Name "hydra.java.syntax.ForInit"++_ForInit_statements = Model.Name "statements"++_ForInit_localVariable = Model.Name "localVariable"++newtype ForUpdate =+  ForUpdate {+    unForUpdate :: [StatementExpression]}+  deriving (Eq, Ord, Read, Show)++_ForUpdate = Model.Name "hydra.java.syntax.ForUpdate"++data EnhancedForStatement =+  EnhancedForStatement {+    enhancedForStatementCond :: EnhancedForCond,+    enhancedForStatementBody :: Statement}+  deriving (Eq, Ord, Read, Show)++_EnhancedForStatement = Model.Name "hydra.java.syntax.EnhancedForStatement"++_EnhancedForStatement_cond = Model.Name "cond"++_EnhancedForStatement_body = Model.Name "body"++data EnhancedForCond =+  EnhancedForCond {+    enhancedForCondDeclaration :: LocalVariableDeclaration,+    enhancedForCondExpression :: Expression}+  deriving (Eq, Ord, Read, Show)++_EnhancedForCond = Model.Name "hydra.java.syntax.EnhancedForCond"++_EnhancedForCond_declaration = Model.Name "declaration"++_EnhancedForCond_expression = Model.Name "expression"++data EnhancedForStatementNoShortIf =+  EnhancedForStatementNoShortIf {+    enhancedForStatementNoShortIfCond :: EnhancedForCond,+    enhancedForStatementNoShortIfBody :: StatementNoShortIf}+  deriving (Eq, Ord, Read, Show)++_EnhancedForStatementNoShortIf = Model.Name "hydra.java.syntax.EnhancedForStatementNoShortIf"++_EnhancedForStatementNoShortIf_cond = Model.Name "cond"++_EnhancedForStatementNoShortIf_body = Model.Name "body"++newtype BreakStatement =+  BreakStatement {+    unBreakStatement :: (Maybe Identifier)}+  deriving (Eq, Ord, Read, Show)++_BreakStatement = Model.Name "hydra.java.syntax.BreakStatement"++newtype YieldStatement =+  YieldStatement {+    unYieldStatement :: Expression}+  deriving (Eq, Ord, Read, Show)++_YieldStatement = Model.Name "hydra.java.syntax.YieldStatement"++newtype ContinueStatement =+  ContinueStatement {+    unContinueStatement :: (Maybe Identifier)}+  deriving (Eq, Ord, Read, Show)++_ContinueStatement = Model.Name "hydra.java.syntax.ContinueStatement"++newtype ReturnStatement =+  ReturnStatement {+    unReturnStatement :: (Maybe Expression)}+  deriving (Eq, Ord, Read, Show)++_ReturnStatement = Model.Name "hydra.java.syntax.ReturnStatement"++newtype ThrowStatement =+  ThrowStatement {+    unThrowStatement :: Expression}+  deriving (Eq, Ord, Read, Show)++_ThrowStatement = Model.Name "hydra.java.syntax.ThrowStatement"++data SynchronizedStatement =+  SynchronizedStatement {+    synchronizedStatementExpression :: Expression,+    synchronizedStatementBlock :: Block}+  deriving (Eq, Ord, Read, Show)++_SynchronizedStatement = Model.Name "hydra.java.syntax.SynchronizedStatement"++_SynchronizedStatement_expression = Model.Name "expression"++_SynchronizedStatement_block = Model.Name "block"++data TryStatement =+  TryStatementSimple TryStatement_Simple |+  TryStatementWithFinally TryStatement_WithFinally |+  TryStatementWithResources TryWithResourcesStatement+  deriving (Eq, Ord, Read, Show)++_TryStatement = Model.Name "hydra.java.syntax.TryStatement"++_TryStatement_simple = Model.Name "simple"++_TryStatement_withFinally = Model.Name "withFinally"++_TryStatement_withResources = Model.Name "withResources"++data TryStatement_Simple =+  TryStatement_Simple {+    tryStatement_SimpleBlock :: Block,+    tryStatement_SimpleCatches :: Catches}+  deriving (Eq, Ord, Read, Show)++_TryStatement_Simple = Model.Name "hydra.java.syntax.TryStatement_Simple"++_TryStatement_Simple_block = Model.Name "block"++_TryStatement_Simple_catches = Model.Name "catches"++data TryStatement_WithFinally =+  TryStatement_WithFinally {+    tryStatement_WithFinallyBlock :: Block,+    tryStatement_WithFinallyCatches :: (Maybe Catches),+    tryStatement_WithFinallyFinally :: Finally}+  deriving (Eq, Ord, Read, Show)++_TryStatement_WithFinally = Model.Name "hydra.java.syntax.TryStatement_WithFinally"++_TryStatement_WithFinally_block = Model.Name "block"++_TryStatement_WithFinally_catches = Model.Name "catches"++_TryStatement_WithFinally_finally = Model.Name "finally"++newtype Catches =+  Catches {+    unCatches :: [CatchClause]}+  deriving (Eq, Ord, Read, Show)++_Catches = Model.Name "hydra.java.syntax.Catches"++data CatchClause =+  CatchClause {+    catchClauseParameter :: (Maybe CatchFormalParameter),+    catchClauseBlock :: Block}+  deriving (Eq, Ord, Read, Show)++_CatchClause = Model.Name "hydra.java.syntax.CatchClause"++_CatchClause_parameter = Model.Name "parameter"++_CatchClause_block = Model.Name "block"++data CatchFormalParameter =+  CatchFormalParameter {+    catchFormalParameterModifiers :: [VariableModifier],+    catchFormalParameterType :: CatchType,+    catchFormalParameterId :: VariableDeclaratorId}+  deriving (Eq, Ord, Read, Show)++_CatchFormalParameter = Model.Name "hydra.java.syntax.CatchFormalParameter"++_CatchFormalParameter_modifiers = Model.Name "modifiers"++_CatchFormalParameter_type = Model.Name "type"++_CatchFormalParameter_id = Model.Name "id"++data CatchType =+  CatchType {+    catchTypeType :: UnannClassType,+    catchTypeTypes :: [ClassType]}+  deriving (Eq, Ord, Read, Show)++_CatchType = Model.Name "hydra.java.syntax.CatchType"++_CatchType_type = Model.Name "type"++_CatchType_types = Model.Name "types"++newtype Finally =+  Finally {+    unFinally :: Block}+  deriving (Eq, Ord, Read, Show)++_Finally = Model.Name "hydra.java.syntax.Finally"++data TryWithResourcesStatement =+  TryWithResourcesStatement {+    tryWithResourcesStatementResourceSpecification :: ResourceSpecification,+    tryWithResourcesStatementBlock :: Block,+    tryWithResourcesStatementCatches :: (Maybe Catches),+    tryWithResourcesStatementFinally :: (Maybe Finally)}+  deriving (Eq, Ord, Read, Show)++_TryWithResourcesStatement = Model.Name "hydra.java.syntax.TryWithResourcesStatement"++_TryWithResourcesStatement_resourceSpecification = Model.Name "resourceSpecification"++_TryWithResourcesStatement_block = Model.Name "block"++_TryWithResourcesStatement_catches = Model.Name "catches"++_TryWithResourcesStatement_finally = Model.Name "finally"++newtype ResourceSpecification =+  ResourceSpecification {+    unResourceSpecification :: [Resource]}+  deriving (Eq, Ord, Read, Show)++_ResourceSpecification = Model.Name "hydra.java.syntax.ResourceSpecification"++data Resource =+  ResourceLocal Resource_Local |+  ResourceVariable VariableAccess+  deriving (Eq, Ord, Read, Show)++_Resource = Model.Name "hydra.java.syntax.Resource"++_Resource_local = Model.Name "local"++_Resource_variable = Model.Name "variable"++data Resource_Local =+  Resource_Local {+    resource_LocalModifiers :: [VariableModifier],+    resource_LocalType :: LocalVariableType,+    resource_LocalIdentifier :: Identifier,+    resource_LocalExpression :: Expression}+  deriving (Eq, Ord, Read, Show)++_Resource_Local = Model.Name "hydra.java.syntax.Resource_Local"++_Resource_Local_modifiers = Model.Name "modifiers"++_Resource_Local_type = Model.Name "type"++_Resource_Local_identifier = Model.Name "identifier"++_Resource_Local_expression = Model.Name "expression"++data VariableAccess =+  VariableAccessExpressionName ExpressionName |+  VariableAccessFieldAccess FieldAccess+  deriving (Eq, Ord, Read, Show)++_VariableAccess = Model.Name "hydra.java.syntax.VariableAccess"++_VariableAccess_expressionName = Model.Name "expressionName"++_VariableAccess_fieldAccess = Model.Name "fieldAccess"++data Primary =+  PrimaryNoNewArray PrimaryNoNewArrayExpression |+  PrimaryArrayCreation ArrayCreationExpression+  deriving (Eq, Ord, Read, Show)++_Primary = Model.Name "hydra.java.syntax.Primary"++_Primary_noNewArray = Model.Name "noNewArray"++_Primary_arrayCreation = Model.Name "arrayCreation"++data PrimaryNoNewArrayExpression =+  PrimaryNoNewArrayExpressionLiteral Literal |+  PrimaryNoNewArrayExpressionClassLiteral ClassLiteral |+  PrimaryNoNewArrayExpressionThis |+  PrimaryNoNewArrayExpressionDotThis TypeName |+  PrimaryNoNewArrayExpressionParens Expression |+  PrimaryNoNewArrayExpressionClassInstance ClassInstanceCreationExpression |+  PrimaryNoNewArrayExpressionFieldAccess FieldAccess |+  PrimaryNoNewArrayExpressionArrayAccess ArrayAccess |+  PrimaryNoNewArrayExpressionMethodInvocation MethodInvocation |+  PrimaryNoNewArrayExpressionMethodReference MethodReference+  deriving (Eq, Ord, Read, Show)++_PrimaryNoNewArrayExpression = Model.Name "hydra.java.syntax.PrimaryNoNewArrayExpression"++_PrimaryNoNewArrayExpression_literal = Model.Name "literal"++_PrimaryNoNewArrayExpression_classLiteral = Model.Name "classLiteral"++_PrimaryNoNewArrayExpression_this = Model.Name "this"++_PrimaryNoNewArrayExpression_dotThis = Model.Name "dotThis"++_PrimaryNoNewArrayExpression_parens = Model.Name "parens"++_PrimaryNoNewArrayExpression_classInstance = Model.Name "classInstance"++_PrimaryNoNewArrayExpression_fieldAccess = Model.Name "fieldAccess"++_PrimaryNoNewArrayExpression_arrayAccess = Model.Name "arrayAccess"++_PrimaryNoNewArrayExpression_methodInvocation = Model.Name "methodInvocation"++_PrimaryNoNewArrayExpression_methodReference = Model.Name "methodReference"++data ClassLiteral =+  ClassLiteralType TypeNameArray |+  ClassLiteralNumericType NumericTypeArray |+  ClassLiteralBoolean BooleanArray |+  ClassLiteralVoid+  deriving (Eq, Ord, Read, Show)++_ClassLiteral = Model.Name "hydra.java.syntax.ClassLiteral"++_ClassLiteral_type = Model.Name "type"++_ClassLiteral_numericType = Model.Name "numericType"++_ClassLiteral_boolean = Model.Name "boolean"++_ClassLiteral_void = Model.Name "void"++data TypeNameArray =+  TypeNameArraySimple TypeName |+  TypeNameArrayArray TypeNameArray+  deriving (Eq, Ord, Read, Show)++_TypeNameArray = Model.Name "hydra.java.syntax.TypeNameArray"++_TypeNameArray_simple = Model.Name "simple"++_TypeNameArray_array = Model.Name "array"++data NumericTypeArray =+  NumericTypeArraySimple NumericType |+  NumericTypeArrayArray NumericTypeArray+  deriving (Eq, Ord, Read, Show)++_NumericTypeArray = Model.Name "hydra.java.syntax.NumericTypeArray"++_NumericTypeArray_simple = Model.Name "simple"++_NumericTypeArray_array = Model.Name "array"++data BooleanArray =+  BooleanArraySimple |+  BooleanArrayArray BooleanArray+  deriving (Eq, Ord, Read, Show)++_BooleanArray = Model.Name "hydra.java.syntax.BooleanArray"++_BooleanArray_simple = Model.Name "simple"++_BooleanArray_array = Model.Name "array"++data ClassInstanceCreationExpression =+  ClassInstanceCreationExpression {+    classInstanceCreationExpressionQualifier :: (Maybe ClassInstanceCreationExpression_Qualifier),+    classInstanceCreationExpressionExpression :: UnqualifiedClassInstanceCreationExpression}+  deriving (Eq, Ord, Read, Show)++_ClassInstanceCreationExpression = Model.Name "hydra.java.syntax.ClassInstanceCreationExpression"++_ClassInstanceCreationExpression_qualifier = Model.Name "qualifier"++_ClassInstanceCreationExpression_expression = Model.Name "expression"++data ClassInstanceCreationExpression_Qualifier =+  ClassInstanceCreationExpression_QualifierExpression ExpressionName |+  ClassInstanceCreationExpression_QualifierPrimary Primary+  deriving (Eq, Ord, Read, Show)++_ClassInstanceCreationExpression_Qualifier = Model.Name "hydra.java.syntax.ClassInstanceCreationExpression_Qualifier"++_ClassInstanceCreationExpression_Qualifier_expression = Model.Name "expression"++_ClassInstanceCreationExpression_Qualifier_primary = Model.Name "primary"++data UnqualifiedClassInstanceCreationExpression =+  UnqualifiedClassInstanceCreationExpression {+    unqualifiedClassInstanceCreationExpressionTypeArguments :: [TypeArgument],+    unqualifiedClassInstanceCreationExpressionClassOrInterface :: ClassOrInterfaceTypeToInstantiate,+    unqualifiedClassInstanceCreationExpressionArguments :: [Expression],+    unqualifiedClassInstanceCreationExpressionBody :: (Maybe ClassBody)}+  deriving (Eq, Ord, Read, Show)++_UnqualifiedClassInstanceCreationExpression = Model.Name "hydra.java.syntax.UnqualifiedClassInstanceCreationExpression"++_UnqualifiedClassInstanceCreationExpression_typeArguments = Model.Name "typeArguments"++_UnqualifiedClassInstanceCreationExpression_classOrInterface = Model.Name "classOrInterface"++_UnqualifiedClassInstanceCreationExpression_arguments = Model.Name "arguments"++_UnqualifiedClassInstanceCreationExpression_body = Model.Name "body"++data ClassOrInterfaceTypeToInstantiate =+  ClassOrInterfaceTypeToInstantiate {+    classOrInterfaceTypeToInstantiateIdentifiers :: [AnnotatedIdentifier],+    classOrInterfaceTypeToInstantiateTypeArguments :: (Maybe TypeArgumentsOrDiamond)}+  deriving (Eq, Ord, Read, Show)++_ClassOrInterfaceTypeToInstantiate = Model.Name "hydra.java.syntax.ClassOrInterfaceTypeToInstantiate"++_ClassOrInterfaceTypeToInstantiate_identifiers = Model.Name "identifiers"++_ClassOrInterfaceTypeToInstantiate_typeArguments = Model.Name "typeArguments"++data AnnotatedIdentifier =+  AnnotatedIdentifier {+    annotatedIdentifierAnnotations :: [Annotation],+    annotatedIdentifierIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_AnnotatedIdentifier = Model.Name "hydra.java.syntax.AnnotatedIdentifier"++_AnnotatedIdentifier_annotations = Model.Name "annotations"++_AnnotatedIdentifier_identifier = Model.Name "identifier"++data TypeArgumentsOrDiamond =+  TypeArgumentsOrDiamondArguments [TypeArgument] |+  TypeArgumentsOrDiamondDiamond+  deriving (Eq, Ord, Read, Show)++_TypeArgumentsOrDiamond = Model.Name "hydra.java.syntax.TypeArgumentsOrDiamond"++_TypeArgumentsOrDiamond_arguments = Model.Name "arguments"++_TypeArgumentsOrDiamond_diamond = Model.Name "diamond"++data FieldAccess =+  FieldAccess {+    fieldAccessQualifier :: FieldAccess_Qualifier,+    fieldAccessIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_FieldAccess = Model.Name "hydra.java.syntax.FieldAccess"++_FieldAccess_qualifier = Model.Name "qualifier"++_FieldAccess_identifier = Model.Name "identifier"++data FieldAccess_Qualifier =+  FieldAccess_QualifierPrimary Primary |+  FieldAccess_QualifierSuper |+  FieldAccess_QualifierTyped TypeName+  deriving (Eq, Ord, Read, Show)++_FieldAccess_Qualifier = Model.Name "hydra.java.syntax.FieldAccess_Qualifier"++_FieldAccess_Qualifier_primary = Model.Name "primary"++_FieldAccess_Qualifier_super = Model.Name "super"++_FieldAccess_Qualifier_typed = Model.Name "typed"++data ArrayAccess =+  ArrayAccess {+    arrayAccessExpression :: (Maybe Expression),+    arrayAccessVariant :: ArrayAccess_Variant}+  deriving (Eq, Ord, Read, Show)++_ArrayAccess = Model.Name "hydra.java.syntax.ArrayAccess"++_ArrayAccess_expression = Model.Name "expression"++_ArrayAccess_variant = Model.Name "variant"++data ArrayAccess_Variant =+  ArrayAccess_VariantName ExpressionName |+  ArrayAccess_VariantPrimary PrimaryNoNewArrayExpression |+  ArrayAccess_VariantArrayCreationWithInitializer ArrayCreationExpressionWithInitializer+  deriving (Eq, Ord, Read, Show)++_ArrayAccess_Variant = Model.Name "hydra.java.syntax.ArrayAccess_Variant"++_ArrayAccess_Variant_name = Model.Name "name"++_ArrayAccess_Variant_primary = Model.Name "primary"++_ArrayAccess_Variant_arrayCreationWithInitializer = Model.Name "arrayCreationWithInitializer"++data MethodInvocation =+  MethodInvocation {+    methodInvocationHeader :: MethodInvocation_Header,+    methodInvocationArguments :: [Expression]}+  deriving (Eq, Ord, Read, Show)++_MethodInvocation = Model.Name "hydra.java.syntax.MethodInvocation"++_MethodInvocation_header = Model.Name "header"++_MethodInvocation_arguments = Model.Name "arguments"++data MethodInvocation_Header =+  MethodInvocation_HeaderSimple MethodName |+  MethodInvocation_HeaderComplex MethodInvocation_Complex+  deriving (Eq, Ord, Read, Show)++_MethodInvocation_Header = Model.Name "hydra.java.syntax.MethodInvocation_Header"++_MethodInvocation_Header_simple = Model.Name "simple"++_MethodInvocation_Header_complex = Model.Name "complex"++data MethodInvocation_Complex =+  MethodInvocation_Complex {+    methodInvocation_ComplexVariant :: MethodInvocation_Variant,+    methodInvocation_ComplexTypeArguments :: [TypeArgument],+    methodInvocation_ComplexIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_MethodInvocation_Complex = Model.Name "hydra.java.syntax.MethodInvocation_Complex"++_MethodInvocation_Complex_variant = Model.Name "variant"++_MethodInvocation_Complex_typeArguments = Model.Name "typeArguments"++_MethodInvocation_Complex_identifier = Model.Name "identifier"++data MethodInvocation_Variant =+  MethodInvocation_VariantType TypeName |+  MethodInvocation_VariantExpression ExpressionName |+  MethodInvocation_VariantPrimary Primary |+  MethodInvocation_VariantSuper |+  MethodInvocation_VariantTypeSuper TypeName+  deriving (Eq, Ord, Read, Show)++_MethodInvocation_Variant = Model.Name "hydra.java.syntax.MethodInvocation_Variant"++_MethodInvocation_Variant_type = Model.Name "type"++_MethodInvocation_Variant_expression = Model.Name "expression"++_MethodInvocation_Variant_primary = Model.Name "primary"++_MethodInvocation_Variant_super = Model.Name "super"++_MethodInvocation_Variant_typeSuper = Model.Name "typeSuper"++data MethodReference =+  MethodReferenceExpression MethodReference_Expression |+  MethodReferencePrimary MethodReference_Primary |+  MethodReferenceReferenceType MethodReference_ReferenceType |+  MethodReferenceSuper MethodReference_Super |+  MethodReferenceNew MethodReference_New |+  MethodReferenceArray MethodReference_Array+  deriving (Eq, Ord, Read, Show)++_MethodReference = Model.Name "hydra.java.syntax.MethodReference"++_MethodReference_expression = Model.Name "expression"++_MethodReference_primary = Model.Name "primary"++_MethodReference_referenceType = Model.Name "referenceType"++_MethodReference_super = Model.Name "super"++_MethodReference_new = Model.Name "new"++_MethodReference_array = Model.Name "array"++data MethodReference_Expression =+  MethodReference_Expression {+    methodReference_ExpressionName :: ExpressionName,+    methodReference_ExpressionTypeArguments :: [TypeArgument],+    methodReference_ExpressionIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_MethodReference_Expression = Model.Name "hydra.java.syntax.MethodReference_Expression"++_MethodReference_Expression_name = Model.Name "name"++_MethodReference_Expression_typeArguments = Model.Name "typeArguments"++_MethodReference_Expression_identifier = Model.Name "identifier"++data MethodReference_Primary =+  MethodReference_Primary {+    methodReference_PrimaryPrimary :: Primary,+    methodReference_PrimaryTypeArguments :: [TypeArgument],+    methodReference_PrimaryIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_MethodReference_Primary = Model.Name "hydra.java.syntax.MethodReference_Primary"++_MethodReference_Primary_primary = Model.Name "primary"++_MethodReference_Primary_typeArguments = Model.Name "typeArguments"++_MethodReference_Primary_identifier = Model.Name "identifier"++data MethodReference_ReferenceType =+  MethodReference_ReferenceType {+    methodReference_ReferenceTypeReferenceType :: ReferenceType,+    methodReference_ReferenceTypeTypeArguments :: [TypeArgument],+    methodReference_ReferenceTypeIdentifier :: Identifier}+  deriving (Eq, Ord, Read, Show)++_MethodReference_ReferenceType = Model.Name "hydra.java.syntax.MethodReference_ReferenceType"++_MethodReference_ReferenceType_referenceType = Model.Name "referenceType"++_MethodReference_ReferenceType_typeArguments = Model.Name "typeArguments"++_MethodReference_ReferenceType_identifier = Model.Name "identifier"++data MethodReference_Super =+  MethodReference_Super {+    methodReference_SuperTypeArguments :: [TypeArgument],+    methodReference_SuperIdentifier :: Identifier,+    methodReference_SuperSuper :: Bool}+  deriving (Eq, Ord, Read, Show)++_MethodReference_Super = Model.Name "hydra.java.syntax.MethodReference_Super"++_MethodReference_Super_typeArguments = Model.Name "typeArguments"++_MethodReference_Super_identifier = Model.Name "identifier"++_MethodReference_Super_super = Model.Name "super"++data MethodReference_New =+  MethodReference_New {+    methodReference_NewClassType :: ClassType,+    methodReference_NewTypeArguments :: [TypeArgument]}+  deriving (Eq, Ord, Read, Show)++_MethodReference_New = Model.Name "hydra.java.syntax.MethodReference_New"++_MethodReference_New_classType = Model.Name "classType"++_MethodReference_New_typeArguments = Model.Name "typeArguments"++newtype MethodReference_Array =+  MethodReference_Array {+    unMethodReference_Array :: ArrayType}+  deriving (Eq, Ord, Read, Show)++_MethodReference_Array = Model.Name "hydra.java.syntax.MethodReference_Array"++data ArrayCreationExpression =+  ArrayCreationExpressionNoInit ArrayCreationExpressionWithoutInitializer |+  ArrayCreationExpressionWithInit ArrayCreationExpressionWithInitializer+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpression = Model.Name "hydra.java.syntax.ArrayCreationExpression"++_ArrayCreationExpression_noInit = Model.Name "noInit"++_ArrayCreationExpression_withInit = Model.Name "withInit"++data ArrayCreationExpressionWithoutInitializer =+  ArrayCreationExpressionWithoutInitializerPrimitive ArrayCreationExpressionWithoutInitializer_Primitive |+  ArrayCreationExpressionWithoutInitializerClassOrInterface ArrayCreationExpressionWithoutInitializer_ClassOrInterface+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithoutInitializer = Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer"++_ArrayCreationExpressionWithoutInitializer_primitive = Model.Name "primitive"++_ArrayCreationExpressionWithoutInitializer_classOrInterface = Model.Name "classOrInterface"++data ArrayCreationExpressionWithoutInitializer_Primitive =+  ArrayCreationExpressionWithoutInitializer_Primitive {+    arrayCreationExpressionWithoutInitializer_PrimitiveType :: PrimitiveTypeWithAnnotations,+    arrayCreationExpressionWithoutInitializer_PrimitiveDimExprs :: [DimExpr],+    arrayCreationExpressionWithoutInitializer_PrimitiveDims :: (Maybe Dims)}+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithoutInitializer_Primitive =+    Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_Primitive"++_ArrayCreationExpressionWithoutInitializer_Primitive_type = Model.Name "type"++_ArrayCreationExpressionWithoutInitializer_Primitive_dimExprs = Model.Name "dimExprs"++_ArrayCreationExpressionWithoutInitializer_Primitive_dims = Model.Name "dims"++data ArrayCreationExpressionWithoutInitializer_ClassOrInterface =+  ArrayCreationExpressionWithoutInitializer_ClassOrInterface {+    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceType :: ClassOrInterfaceType,+    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDimExprs :: [DimExpr],+    arrayCreationExpressionWithoutInitializer_ClassOrInterfaceDims :: (Maybe Dims)}+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithoutInitializer_ClassOrInterface =+    Model.Name "hydra.java.syntax.ArrayCreationExpressionWithoutInitializer_ClassOrInterface"++_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_type = Model.Name "type"++_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_dimExprs = Model.Name "dimExprs"++_ArrayCreationExpressionWithoutInitializer_ClassOrInterface_dims = Model.Name "dims"++data ArrayCreationExpressionWithInitializer =+  ArrayCreationExpressionWithInitializerPrimitive ArrayCreationExpressionWithInitializer_Primitive |+  ArrayCreationExpressionWithInitializerClassOrInterface ArrayCreationExpressionWithInitializer_ClassOrInterface+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithInitializer = Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer"++_ArrayCreationExpressionWithInitializer_primitive = Model.Name "primitive"++_ArrayCreationExpressionWithInitializer_classOrInterface = Model.Name "classOrInterface"++data ArrayCreationExpressionWithInitializer_Primitive =+  ArrayCreationExpressionWithInitializer_Primitive {+    arrayCreationExpressionWithInitializer_PrimitiveType :: PrimitiveTypeWithAnnotations,+    arrayCreationExpressionWithInitializer_PrimitiveDims :: [Dims],+    arrayCreationExpressionWithInitializer_PrimitiveArray :: ArrayInitializer}+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithInitializer_Primitive =+    Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_Primitive"++_ArrayCreationExpressionWithInitializer_Primitive_type = Model.Name "type"++_ArrayCreationExpressionWithInitializer_Primitive_dims = Model.Name "dims"++_ArrayCreationExpressionWithInitializer_Primitive_array = Model.Name "array"++data ArrayCreationExpressionWithInitializer_ClassOrInterface =+  ArrayCreationExpressionWithInitializer_ClassOrInterface {+    arrayCreationExpressionWithInitializer_ClassOrInterfaceType :: ClassOrInterfaceType,+    arrayCreationExpressionWithInitializer_ClassOrInterfaceDims :: [Dims],+    arrayCreationExpressionWithInitializer_ClassOrInterfaceArray :: ArrayInitializer}+  deriving (Eq, Ord, Read, Show)++_ArrayCreationExpressionWithInitializer_ClassOrInterface =+    Model.Name "hydra.java.syntax.ArrayCreationExpressionWithInitializer_ClassOrInterface"++_ArrayCreationExpressionWithInitializer_ClassOrInterface_type = Model.Name "type"++_ArrayCreationExpressionWithInitializer_ClassOrInterface_dims = Model.Name "dims"++_ArrayCreationExpressionWithInitializer_ClassOrInterface_array = Model.Name "array"++data DimExpr =+  DimExpr {+    dimExprAnnotations :: [Annotation],+    dimExprExpression :: (Maybe Expression)}+  deriving (Eq, Ord, Read, Show)++_DimExpr = Model.Name "hydra.java.syntax.DimExpr"++_DimExpr_annotations = Model.Name "annotations"++_DimExpr_expression = Model.Name "expression"++data Expression =+  ExpressionLambda LambdaExpression |+  ExpressionAssignment AssignmentExpression+  deriving (Eq, Ord, Read, Show)++_Expression = Model.Name "hydra.java.syntax.Expression"++_Expression_lambda = Model.Name "lambda"++_Expression_assignment = Model.Name "assignment"++data LambdaExpression =+  LambdaExpression {+    lambdaExpressionParameters :: LambdaParameters,+    lambdaExpressionBody :: LambdaBody}+  deriving (Eq, Ord, Read, Show)++_LambdaExpression = Model.Name "hydra.java.syntax.LambdaExpression"++_LambdaExpression_parameters = Model.Name "parameters"++_LambdaExpression_body = Model.Name "body"++data LambdaParameters =+  LambdaParametersTuple [LambdaParameters] |+  LambdaParametersSingle Identifier+  deriving (Eq, Ord, Read, Show)++_LambdaParameters = Model.Name "hydra.java.syntax.LambdaParameters"++_LambdaParameters_tuple = Model.Name "tuple"++_LambdaParameters_single = Model.Name "single"++data LambdaParameter =+  LambdaParameterNormal LambdaParameter_Normal |+  LambdaParameterVariableArity VariableArityParameter+  deriving (Eq, Ord, Read, Show)++_LambdaParameter = Model.Name "hydra.java.syntax.LambdaParameter"++_LambdaParameter_normal = Model.Name "normal"++_LambdaParameter_variableArity = Model.Name "variableArity"++data LambdaParameter_Normal =+  LambdaParameter_Normal {+    lambdaParameter_NormalModifiers :: [VariableModifier],+    lambdaParameter_NormalType :: LambdaParameterType,+    lambdaParameter_NormalId :: VariableDeclaratorId}+  deriving (Eq, Ord, Read, Show)++_LambdaParameter_Normal = Model.Name "hydra.java.syntax.LambdaParameter_Normal"++_LambdaParameter_Normal_modifiers = Model.Name "modifiers"++_LambdaParameter_Normal_type = Model.Name "type"++_LambdaParameter_Normal_id = Model.Name "id"++data LambdaParameterType =+  LambdaParameterTypeType UnannType |+  LambdaParameterTypeVar+  deriving (Eq, Ord, Read, Show)++_LambdaParameterType = Model.Name "hydra.java.syntax.LambdaParameterType"++_LambdaParameterType_type = Model.Name "type"++_LambdaParameterType_var = Model.Name "var"++data LambdaBody =+  LambdaBodyExpression Expression |+  LambdaBodyBlock Block+  deriving (Eq, Ord, Read, Show)++_LambdaBody = Model.Name "hydra.java.syntax.LambdaBody"++_LambdaBody_expression = Model.Name "expression"++_LambdaBody_block = Model.Name "block"++data AssignmentExpression =+  AssignmentExpressionConditional ConditionalExpression |+  AssignmentExpressionAssignment Assignment+  deriving (Eq, Ord, Read, Show)++_AssignmentExpression = Model.Name "hydra.java.syntax.AssignmentExpression"++_AssignmentExpression_conditional = Model.Name "conditional"++_AssignmentExpression_assignment = Model.Name "assignment"++data Assignment =+  Assignment {+    assignmentLhs :: LeftHandSide,+    assignmentOp :: AssignmentOperator,+    assignmentExpression :: Expression}+  deriving (Eq, Ord, Read, Show)++_Assignment = Model.Name "hydra.java.syntax.Assignment"++_Assignment_lhs = Model.Name "lhs"++_Assignment_op = Model.Name "op"++_Assignment_expression = Model.Name "expression"++data LeftHandSide =+  LeftHandSideExpressionName ExpressionName |+  LeftHandSideFieldAccess FieldAccess |+  LeftHandSideArrayAccess ArrayAccess+  deriving (Eq, Ord, Read, Show)++_LeftHandSide = Model.Name "hydra.java.syntax.LeftHandSide"++_LeftHandSide_expressionName = Model.Name "expressionName"++_LeftHandSide_fieldAccess = Model.Name "fieldAccess"++_LeftHandSide_arrayAccess = Model.Name "arrayAccess"++data AssignmentOperator =+  AssignmentOperatorSimple |+  AssignmentOperatorTimes |+  AssignmentOperatorDiv |+  AssignmentOperatorMod |+  AssignmentOperatorPlus |+  AssignmentOperatorMinus |+  AssignmentOperatorShiftLeft |+  AssignmentOperatorShiftRight |+  AssignmentOperatorShiftRightZeroFill |+  AssignmentOperatorAnd |+  AssignmentOperatorXor |+  AssignmentOperatorOr+  deriving (Eq, Ord, Read, Show)++_AssignmentOperator = Model.Name "hydra.java.syntax.AssignmentOperator"++_AssignmentOperator_simple = Model.Name "simple"++_AssignmentOperator_times = Model.Name "times"++_AssignmentOperator_div = Model.Name "div"++_AssignmentOperator_mod = Model.Name "mod"++_AssignmentOperator_plus = Model.Name "plus"++_AssignmentOperator_minus = Model.Name "minus"++_AssignmentOperator_shiftLeft = Model.Name "shiftLeft"++_AssignmentOperator_shiftRight = Model.Name "shiftRight"++_AssignmentOperator_shiftRightZeroFill = Model.Name "shiftRightZeroFill"++_AssignmentOperator_and = Model.Name "and"++_AssignmentOperator_xor = Model.Name "xor"++_AssignmentOperator_or = Model.Name "or"++data ConditionalExpression =+  ConditionalExpressionSimple ConditionalOrExpression |+  ConditionalExpressionTernaryCond ConditionalExpression_TernaryCond |+  ConditionalExpressionTernaryLambda ConditionalExpression_TernaryLambda+  deriving (Eq, Ord, Read, Show)++_ConditionalExpression = Model.Name "hydra.java.syntax.ConditionalExpression"++_ConditionalExpression_simple = Model.Name "simple"++_ConditionalExpression_ternaryCond = Model.Name "ternaryCond"++_ConditionalExpression_ternaryLambda = Model.Name "ternaryLambda"++data ConditionalExpression_TernaryCond =+  ConditionalExpression_TernaryCond {+    conditionalExpression_TernaryCondCond :: ConditionalOrExpression,+    conditionalExpression_TernaryCondIfTrue :: Expression,+    conditionalExpression_TernaryCondIfFalse :: ConditionalExpression}+  deriving (Eq, Ord, Read, Show)++_ConditionalExpression_TernaryCond = Model.Name "hydra.java.syntax.ConditionalExpression_TernaryCond"++_ConditionalExpression_TernaryCond_cond = Model.Name "cond"++_ConditionalExpression_TernaryCond_ifTrue = Model.Name "ifTrue"++_ConditionalExpression_TernaryCond_ifFalse = Model.Name "ifFalse"++data ConditionalExpression_TernaryLambda =+  ConditionalExpression_TernaryLambda {+    conditionalExpression_TernaryLambdaCond :: ConditionalOrExpression,+    conditionalExpression_TernaryLambdaIfTrue :: Expression,+    conditionalExpression_TernaryLambdaIfFalse :: LambdaExpression}+  deriving (Eq, Ord, Read, Show)++_ConditionalExpression_TernaryLambda = Model.Name "hydra.java.syntax.ConditionalExpression_TernaryLambda"++_ConditionalExpression_TernaryLambda_cond = Model.Name "cond"++_ConditionalExpression_TernaryLambda_ifTrue = Model.Name "ifTrue"++_ConditionalExpression_TernaryLambda_ifFalse = Model.Name "ifFalse"++newtype ConditionalOrExpression =+  ConditionalOrExpression {+    unConditionalOrExpression :: [ConditionalAndExpression]}+  deriving (Eq, Ord, Read, Show)++_ConditionalOrExpression = Model.Name "hydra.java.syntax.ConditionalOrExpression"++newtype ConditionalAndExpression =+  ConditionalAndExpression {+    unConditionalAndExpression :: [InclusiveOrExpression]}+  deriving (Eq, Ord, Read, Show)++_ConditionalAndExpression = Model.Name "hydra.java.syntax.ConditionalAndExpression"++newtype InclusiveOrExpression =+  InclusiveOrExpression {+    unInclusiveOrExpression :: [ExclusiveOrExpression]}+  deriving (Eq, Ord, Read, Show)++_InclusiveOrExpression = Model.Name "hydra.java.syntax.InclusiveOrExpression"++newtype ExclusiveOrExpression =+  ExclusiveOrExpression {+    unExclusiveOrExpression :: [AndExpression]}+  deriving (Eq, Ord, Read, Show)++_ExclusiveOrExpression = Model.Name "hydra.java.syntax.ExclusiveOrExpression"++newtype AndExpression =+  AndExpression {+    unAndExpression :: [EqualityExpression]}+  deriving (Eq, Ord, Read, Show)++_AndExpression = Model.Name "hydra.java.syntax.AndExpression"++data EqualityExpression =+  EqualityExpressionUnary RelationalExpression |+  EqualityExpressionEqual EqualityExpression_Binary |+  EqualityExpressionNotEqual EqualityExpression_Binary+  deriving (Eq, Ord, Read, Show)++_EqualityExpression = Model.Name "hydra.java.syntax.EqualityExpression"++_EqualityExpression_unary = Model.Name "unary"++_EqualityExpression_equal = Model.Name "equal"++_EqualityExpression_notEqual = Model.Name "notEqual"++data EqualityExpression_Binary =+  EqualityExpression_Binary {+    equalityExpression_BinaryLhs :: EqualityExpression,+    equalityExpression_BinaryRhs :: RelationalExpression}+  deriving (Eq, Ord, Read, Show)++_EqualityExpression_Binary = Model.Name "hydra.java.syntax.EqualityExpression_Binary"++_EqualityExpression_Binary_lhs = Model.Name "lhs"++_EqualityExpression_Binary_rhs = Model.Name "rhs"++data RelationalExpression =+  RelationalExpressionSimple ShiftExpression |+  RelationalExpressionLessThan RelationalExpression_LessThan |+  RelationalExpressionGreaterThan RelationalExpression_GreaterThan |+  RelationalExpressionLessThanEqual RelationalExpression_LessThanEqual |+  RelationalExpressionGreaterThanEqual RelationalExpression_GreaterThanEqual |+  RelationalExpressionInstanceofExpression InstanceofExpression+  deriving (Eq, Ord, Read, Show)++_RelationalExpression = Model.Name "hydra.java.syntax.RelationalExpression"++_RelationalExpression_simple = Model.Name "simple"++_RelationalExpression_lessThan = Model.Name "lessThan"++_RelationalExpression_greaterThan = Model.Name "greaterThan"++_RelationalExpression_lessThanEqual = Model.Name "lessThanEqual"++_RelationalExpression_greaterThanEqual = Model.Name "greaterThanEqual"++_RelationalExpression_instanceofExpression = Model.Name "instanceofExpression"++data RelationalExpression_LessThan =+  RelationalExpression_LessThan {+    relationalExpression_LessThanLhs :: RelationalExpression,+    relationalExpression_LessThanRhs :: ShiftExpression}+  deriving (Eq, Ord, Read, Show)++_RelationalExpression_LessThan = Model.Name "hydra.java.syntax.RelationalExpression_LessThan"++_RelationalExpression_LessThan_lhs = Model.Name "lhs"++_RelationalExpression_LessThan_rhs = Model.Name "rhs"++data RelationalExpression_GreaterThan =+  RelationalExpression_GreaterThan {+    relationalExpression_GreaterThanLhs :: RelationalExpression,+    relationalExpression_GreaterThanRhs :: ShiftExpression}+  deriving (Eq, Ord, Read, Show)++_RelationalExpression_GreaterThan = Model.Name "hydra.java.syntax.RelationalExpression_GreaterThan"++_RelationalExpression_GreaterThan_lhs = Model.Name "lhs"++_RelationalExpression_GreaterThan_rhs = Model.Name "rhs"++data RelationalExpression_LessThanEqual =+  RelationalExpression_LessThanEqual {+    relationalExpression_LessThanEqualLhs :: RelationalExpression,+    relationalExpression_LessThanEqualRhs :: ShiftExpression}+  deriving (Eq, Ord, Read, Show)++_RelationalExpression_LessThanEqual = Model.Name "hydra.java.syntax.RelationalExpression_LessThanEqual"++_RelationalExpression_LessThanEqual_lhs = Model.Name "lhs"++_RelationalExpression_LessThanEqual_rhs = Model.Name "rhs"++data RelationalExpression_GreaterThanEqual =+  RelationalExpression_GreaterThanEqual {+    relationalExpression_GreaterThanEqualLhs :: RelationalExpression,+    relationalExpression_GreaterThanEqualRhs :: ShiftExpression}+  deriving (Eq, Ord, Read, Show)++_RelationalExpression_GreaterThanEqual = Model.Name "hydra.java.syntax.RelationalExpression_GreaterThanEqual"++_RelationalExpression_GreaterThanEqual_lhs = Model.Name "lhs"++_RelationalExpression_GreaterThanEqual_rhs = Model.Name "rhs"++data InstanceofExpression =+  InstanceofExpression {+    instanceofExpressionLhs :: RelationalExpression,+    instanceofExpressionRhs :: InstanceofExpression_Rhs}+  deriving (Eq, Ord, Read, Show)++_InstanceofExpression = Model.Name "hydra.java.syntax.InstanceofExpression"++_InstanceofExpression_lhs = Model.Name "lhs"++_InstanceofExpression_rhs = Model.Name "rhs"++data InstanceofExpression_Rhs =+  InstanceofExpression_RhsReferenceType ReferenceType |+  InstanceofExpression_RhsPattern Pattern+  deriving (Eq, Ord, Read, Show)++_InstanceofExpression_Rhs = Model.Name "hydra.java.syntax.InstanceofExpression_Rhs"++_InstanceofExpression_Rhs_referenceType = Model.Name "referenceType"++_InstanceofExpression_Rhs_pattern = Model.Name "pattern"++data ShiftExpression =+  ShiftExpressionUnary AdditiveExpression |+  ShiftExpressionShiftLeft ShiftExpression_Binary |+  ShiftExpressionShiftRight ShiftExpression_Binary |+  ShiftExpressionShiftRightZeroFill ShiftExpression_Binary+  deriving (Eq, Ord, Read, Show)++_ShiftExpression = Model.Name "hydra.java.syntax.ShiftExpression"++_ShiftExpression_unary = Model.Name "unary"++_ShiftExpression_shiftLeft = Model.Name "shiftLeft"++_ShiftExpression_shiftRight = Model.Name "shiftRight"++_ShiftExpression_shiftRightZeroFill = Model.Name "shiftRightZeroFill"++data ShiftExpression_Binary =+  ShiftExpression_Binary {+    shiftExpression_BinaryLhs :: ShiftExpression,+    shiftExpression_BinaryRhs :: AdditiveExpression}+  deriving (Eq, Ord, Read, Show)++_ShiftExpression_Binary = Model.Name "hydra.java.syntax.ShiftExpression_Binary"++_ShiftExpression_Binary_lhs = Model.Name "lhs"++_ShiftExpression_Binary_rhs = Model.Name "rhs"++data AdditiveExpression =+  AdditiveExpressionUnary MultiplicativeExpression |+  AdditiveExpressionPlus AdditiveExpression_Binary |+  AdditiveExpressionMinus AdditiveExpression_Binary+  deriving (Eq, Ord, Read, Show)++_AdditiveExpression = Model.Name "hydra.java.syntax.AdditiveExpression"++_AdditiveExpression_unary = Model.Name "unary"++_AdditiveExpression_plus = Model.Name "plus"++_AdditiveExpression_minus = Model.Name "minus"++data AdditiveExpression_Binary =+  AdditiveExpression_Binary {+    additiveExpression_BinaryLhs :: AdditiveExpression,+    additiveExpression_BinaryRhs :: MultiplicativeExpression}+  deriving (Eq, Ord, Read, Show)++_AdditiveExpression_Binary = Model.Name "hydra.java.syntax.AdditiveExpression_Binary"++_AdditiveExpression_Binary_lhs = Model.Name "lhs"++_AdditiveExpression_Binary_rhs = Model.Name "rhs"++data MultiplicativeExpression =+  MultiplicativeExpressionUnary UnaryExpression |+  MultiplicativeExpressionTimes MultiplicativeExpression_Binary |+  MultiplicativeExpressionDivide MultiplicativeExpression_Binary |+  MultiplicativeExpressionMod MultiplicativeExpression_Binary+  deriving (Eq, Ord, Read, Show)++_MultiplicativeExpression = Model.Name "hydra.java.syntax.MultiplicativeExpression"++_MultiplicativeExpression_unary = Model.Name "unary"++_MultiplicativeExpression_times = Model.Name "times"++_MultiplicativeExpression_divide = Model.Name "divide"++_MultiplicativeExpression_mod = Model.Name "mod"++data MultiplicativeExpression_Binary =+  MultiplicativeExpression_Binary {+    multiplicativeExpression_BinaryLhs :: MultiplicativeExpression,+    multiplicativeExpression_BinaryRhs :: UnaryExpression}+  deriving (Eq, Ord, Read, Show)++_MultiplicativeExpression_Binary = Model.Name "hydra.java.syntax.MultiplicativeExpression_Binary"++_MultiplicativeExpression_Binary_lhs = Model.Name "lhs"++_MultiplicativeExpression_Binary_rhs = Model.Name "rhs"++data UnaryExpression =+  UnaryExpressionPreIncrement PreIncrementExpression |+  UnaryExpressionPreDecrement PreDecrementExpression |+  UnaryExpressionPlus UnaryExpression |+  UnaryExpressionMinus UnaryExpression |+  UnaryExpressionOther UnaryExpressionNotPlusMinus+  deriving (Eq, Ord, Read, Show)++_UnaryExpression = Model.Name "hydra.java.syntax.UnaryExpression"++_UnaryExpression_preIncrement = Model.Name "preIncrement"++_UnaryExpression_preDecrement = Model.Name "preDecrement"++_UnaryExpression_plus = Model.Name "plus"++_UnaryExpression_minus = Model.Name "minus"++_UnaryExpression_other = Model.Name "other"++newtype PreIncrementExpression =+  PreIncrementExpression {+    unPreIncrementExpression :: UnaryExpression}+  deriving (Eq, Ord, Read, Show)++_PreIncrementExpression = Model.Name "hydra.java.syntax.PreIncrementExpression"++newtype PreDecrementExpression =+  PreDecrementExpression {+    unPreDecrementExpression :: UnaryExpression}+  deriving (Eq, Ord, Read, Show)++_PreDecrementExpression = Model.Name "hydra.java.syntax.PreDecrementExpression"++data UnaryExpressionNotPlusMinus =+  UnaryExpressionNotPlusMinusPostfix PostfixExpression |+  UnaryExpressionNotPlusMinusTilde UnaryExpression |+  UnaryExpressionNotPlusMinusNot UnaryExpression |+  UnaryExpressionNotPlusMinusCast CastExpression |+  UnaryExpressionNotPlusMinusSwitchExpression SwitchExpression+  deriving (Eq, Ord, Read, Show)++_UnaryExpressionNotPlusMinus = Model.Name "hydra.java.syntax.UnaryExpressionNotPlusMinus"++_UnaryExpressionNotPlusMinus_postfix = Model.Name "postfix"++_UnaryExpressionNotPlusMinus_tilde = Model.Name "tilde"++_UnaryExpressionNotPlusMinus_not = Model.Name "not"++_UnaryExpressionNotPlusMinus_cast = Model.Name "cast"++_UnaryExpressionNotPlusMinus_switchExpression = Model.Name "switchExpression"++data PostfixExpression =+  PostfixExpressionPrimary Primary |+  PostfixExpressionName ExpressionName |+  PostfixExpressionPostIncrement PostIncrementExpression |+  PostfixExpressionPostDecrement PostDecrementExpression+  deriving (Eq, Ord, Read, Show)++_PostfixExpression = Model.Name "hydra.java.syntax.PostfixExpression"++_PostfixExpression_primary = Model.Name "primary"++_PostfixExpression_name = Model.Name "name"++_PostfixExpression_postIncrement = Model.Name "postIncrement"++_PostfixExpression_postDecrement = Model.Name "postDecrement"++newtype PostIncrementExpression =+  PostIncrementExpression {+    unPostIncrementExpression :: PostfixExpression}+  deriving (Eq, Ord, Read, Show)++_PostIncrementExpression = Model.Name "hydra.java.syntax.PostIncrementExpression"++newtype PostDecrementExpression =+  PostDecrementExpression {+    unPostDecrementExpression :: PostfixExpression}+  deriving (Eq, Ord, Read, Show)++_PostDecrementExpression = Model.Name "hydra.java.syntax.PostDecrementExpression"++data CastExpression =+  CastExpressionPrimitive CastExpression_Primitive |+  CastExpressionNotPlusMinus CastExpression_NotPlusMinus |+  CastExpressionLambda CastExpression_Lambda+  deriving (Eq, Ord, Read, Show)++_CastExpression = Model.Name "hydra.java.syntax.CastExpression"++_CastExpression_primitive = Model.Name "primitive"++_CastExpression_notPlusMinus = Model.Name "notPlusMinus"++_CastExpression_lambda = Model.Name "lambda"++data CastExpression_Primitive =+  CastExpression_Primitive {+    castExpression_PrimitiveType :: PrimitiveTypeWithAnnotations,+    castExpression_PrimitiveExpression :: UnaryExpression}+  deriving (Eq, Ord, Read, Show)++_CastExpression_Primitive = Model.Name "hydra.java.syntax.CastExpression_Primitive"++_CastExpression_Primitive_type = Model.Name "type"++_CastExpression_Primitive_expression = Model.Name "expression"++data CastExpression_NotPlusMinus =+  CastExpression_NotPlusMinus {+    castExpression_NotPlusMinusRefAndBounds :: CastExpression_RefAndBounds,+    castExpression_NotPlusMinusExpression :: UnaryExpression}+  deriving (Eq, Ord, Read, Show)++_CastExpression_NotPlusMinus = Model.Name "hydra.java.syntax.CastExpression_NotPlusMinus"++_CastExpression_NotPlusMinus_refAndBounds = Model.Name "refAndBounds"++_CastExpression_NotPlusMinus_expression = Model.Name "expression"++data CastExpression_Lambda =+  CastExpression_Lambda {+    castExpression_LambdaRefAndBounds :: CastExpression_RefAndBounds,+    castExpression_LambdaExpression :: LambdaExpression}+  deriving (Eq, Ord, Read, Show)++_CastExpression_Lambda = Model.Name "hydra.java.syntax.CastExpression_Lambda"++_CastExpression_Lambda_refAndBounds = Model.Name "refAndBounds"++_CastExpression_Lambda_expression = Model.Name "expression"++data CastExpression_RefAndBounds =+  CastExpression_RefAndBounds {+    castExpression_RefAndBoundsType :: ReferenceType,+    castExpression_RefAndBoundsBounds :: [AdditionalBound]}+  deriving (Eq, Ord, Read, Show)++_CastExpression_RefAndBounds = Model.Name "hydra.java.syntax.CastExpression_RefAndBounds"++_CastExpression_RefAndBounds_type = Model.Name "type"++_CastExpression_RefAndBounds_bounds = Model.Name "bounds"++data SwitchExpression =+  SwitchExpression {+    switchExpressionCond :: Expression,+    switchExpressionBlock :: SwitchBlock}+  deriving (Eq, Ord, Read, Show)++_SwitchExpression = Model.Name "hydra.java.syntax.SwitchExpression"++_SwitchExpression_cond = Model.Name "cond"++_SwitchExpression_block = Model.Name "block"++newtype ConstantExpression =+  ConstantExpression {+    unConstantExpression :: Expression}+  deriving (Eq, Ord, Read, Show)++_ConstantExpression = Model.Name "hydra.java.syntax.ConstantExpression"
src/main/haskell/Hydra/Java/Testing.hs view
@@ -4,41 +4,41 @@  module Hydra.Java.Testing where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Constants as Constants-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Constants as Constants+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as Names+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Test.Utils as Utils+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Names as Names-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Test.Utils as Utils-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -57,7 +57,7 @@                     "import org.junit.jupiter.api.Test;",                     "import static org.junit.jupiter.api.Assertions.*;",                     "import java.util.*;",-                    "import hydra.overlay.java.util.*;"]+                    "import hydra.core.overlay.java.util.*;"]           header =                   Strings.concat [                     Strings.concat2 "// " Constants.warningAutoGeneratedFile,
src/main/haskell/Hydra/Java/Utils.hs view
@@ -4,48 +4,48 @@  module Hydra.Java.Utils where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Formatting as Formatting-import qualified Hydra.Graph as Graph+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Formatting as Formatting+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.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.Pairs as Pairs+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Names as CoreNames+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Serialization as Serialization+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import qualified Hydra.Java.Environment as Environment import qualified Hydra.Java.Language as Language import qualified Hydra.Java.Names as JavaNames import qualified Hydra.Java.Serde as Serde import qualified Hydra.Java.Syntax as Syntax-import qualified Hydra.Json.Model as Model-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.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.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Serialization as Serialization-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void@@ -61,7 +61,7 @@         Syntax.additiveExpression_BinaryLhs = ae,         Syntax.additiveExpression_BinaryRhs = me})) (Syntax.AdditiveExpressionUnary (Optionals.withDefault dummyMult (Lists.head exprs))) (Lists.drop 1 exprs)) -addInScopeVar :: Core.Name -> Environment.Aliases -> Environment.Aliases+addInScopeVar :: Model.Name -> Environment.Aliases -> Environment.Aliases addInScopeVar name aliases =     Environment.Aliases {       Environment.aliasesCurrentNamespace = (Environment.aliasesCurrentNamespace aliases),@@ -78,7 +78,7 @@       Environment.aliasesMethodCodomain = (Environment.aliasesMethodCodomain aliases),       Environment.aliasesThunkedVars = (Environment.aliasesThunkedVars aliases)} -addInScopeVars :: [Core.Name] -> Environment.Aliases -> Environment.Aliases+addInScopeVars :: [Model.Name] -> Environment.Aliases -> Environment.Aliases addInScopeVars names aliases = Lists.foldl (\a -> \n -> addInScopeVar n a) aliases names  addJavaTypeParameter :: Syntax.ReferenceType -> Syntax.Type -> t0 -> Either Errors.Error Syntax.Type@@ -102,7 +102,7 @@         Syntax.ReferenceTypeArray _ -> Left (Errors.ErrorOther (Errors.OtherError "expected a Java class or interface type, or a variable"))       Syntax.TypePrimitive _ -> Left (Errors.ErrorOther (Errors.OtherError "expected a reference type")) -addVarRename :: Core.Name -> Core.Name -> Environment.Aliases -> Environment.Aliases+addVarRename :: Model.Name -> Model.Name -> Environment.Aliases -> Environment.Aliases addVarRename original renamed aliases =     Environment.Aliases {       Environment.aliasesCurrentNamespace = (Environment.aliasesCurrentNamespace aliases),@@ -126,7 +126,7 @@         varId])),       Syntax.expressionNameIdentifier = fieldId} -fieldNameToJavaExpression :: Core.Name -> Syntax.Expression+fieldNameToJavaExpression :: Model.Name -> Syntax.Expression fieldNameToJavaExpression fname =     Syntax.ExpressionAssignment (Syntax.AssignmentExpressionConditional (Syntax.ConditionalExpressionSimple (Syntax.ConditionalOrExpression [       Syntax.ConditionalAndExpression [@@ -135,14 +135,14 @@             Syntax.AndExpression [               Syntax.EqualityExpressionUnary (Syntax.RelationalExpressionSimple (Syntax.ShiftExpressionUnary (Syntax.AdditiveExpressionUnary (Syntax.MultiplicativeExpressionUnary (Syntax.UnaryExpressionOther (Syntax.UnaryExpressionNotPlusMinusPostfix (Syntax.PostfixExpressionName (javaIdentifierToJavaExpressionName (fieldNameToJavaIdentifier fname)))))))))]]]]]))) -fieldNameToJavaIdentifier :: Core.Name -> Syntax.Identifier-fieldNameToJavaIdentifier fname = javaIdentifier (Core.unName fname)+fieldNameToJavaIdentifier :: Model.Name -> Syntax.Identifier+fieldNameToJavaIdentifier fname = javaIdentifier (Model.unName fname) -fieldNameToJavaVariableDeclarator :: Core.Name -> Syntax.VariableDeclarator-fieldNameToJavaVariableDeclarator fname = javaVariableDeclarator (javaIdentifier (Core.unName fname)) Nothing+fieldNameToJavaVariableDeclarator :: Model.Name -> Syntax.VariableDeclarator+fieldNameToJavaVariableDeclarator fname = javaVariableDeclarator (javaIdentifier (Model.unName fname)) Nothing -fieldNameToJavaVariableDeclaratorId :: Core.Name -> Syntax.VariableDeclaratorId-fieldNameToJavaVariableDeclaratorId fname = javaVariableDeclaratorId (javaIdentifier (Core.unName fname))+fieldNameToJavaVariableDeclaratorId :: Model.Name -> Syntax.VariableDeclaratorId+fieldNameToJavaVariableDeclaratorId fname = javaVariableDeclaratorId (javaIdentifier (Model.unName fname))  finalVarDeclarationStatement :: Syntax.Identifier -> Syntax.Expression -> Syntax.BlockStatement finalVarDeclarationStatement id rhs =@@ -249,7 +249,7 @@         Syntax.primitiveTypeWithAnnotationsAnnotations = []},       Syntax.castExpression_PrimitiveExpression = expr}) -javaClassDeclaration :: Environment.Aliases -> [Syntax.TypeParameter] -> Core.Name -> [Syntax.ClassModifier] -> Maybe Core.Name -> [Syntax.InterfaceType] -> [Syntax.ClassBodyDeclarationWithComments] -> Syntax.ClassDeclaration+javaClassDeclaration :: Environment.Aliases -> [Syntax.TypeParameter] -> Model.Name -> [Syntax.ClassModifier] -> Maybe Model.Name -> [Syntax.InterfaceType] -> [Syntax.ClassBodyDeclarationWithComments] -> Syntax.ClassDeclaration javaClassDeclaration aliases tparams elName mods supname impls bodyDecls =        let extends_ = Optionals.map (\n -> nameToJavaClassType aliases True [] n Nothing) supname@@ -306,7 +306,7 @@           Syntax.annotatedIdentifierIdentifier = id}],       Syntax.classOrInterfaceTypeToInstantiateTypeArguments = targs} -javaDeclName :: Core.Name -> Syntax.TypeIdentifier+javaDeclName :: Model.Name -> Syntax.TypeIdentifier javaDeclName name = Syntax.TypeIdentifier (javaVariableName name)  javaDoubleCastExpression :: Syntax.ReferenceType -> Syntax.ReferenceType -> Syntax.UnaryExpression -> Syntax.CastExpression@@ -459,13 +459,13 @@ javaInterfaceDeclarationToJavaClassBodyDeclaration nid =     Syntax.ClassBodyDeclarationClassMember (Syntax.ClassMemberDeclarationInterface (Syntax.InterfaceDeclarationNormalInterface nid)) -javaLambda :: Core.Name -> Syntax.Expression -> Syntax.Expression+javaLambda :: Model.Name -> Syntax.Expression -> Syntax.Expression javaLambda v body =     Syntax.ExpressionLambda (Syntax.LambdaExpression {       Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersSingle (variableToJavaIdentifier v)),       Syntax.lambdaExpressionBody = (Syntax.LambdaBodyExpression body)}) -javaLambdaFromBlock :: Core.Name -> Syntax.Block -> Syntax.Expression+javaLambdaFromBlock :: Model.Name -> Syntax.Block -> Syntax.Expression javaLambdaFromBlock v block =     Syntax.ExpressionLambda (Syntax.LambdaExpression {       Syntax.lambdaExpressionParameters = (Syntax.LambdaParametersSingle (variableToJavaIdentifier v)),@@ -672,7 +672,7 @@ javaThrowStatement e =     Syntax.StatementWithoutTrailing (Syntax.StatementWithoutTrailingSubstatementThrow (Syntax.ThrowStatement e)) -javaTypeFromTypeName :: Environment.Aliases -> Core.Name -> Syntax.Type+javaTypeFromTypeName :: Environment.Aliases -> Model.Name -> Syntax.Type javaTypeFromTypeName aliases elName =     javaTypeVariableToType (Syntax.TypeVariable {       Syntax.typeVariableAnnotations = [],@@ -700,7 +700,7 @@       Syntax.typeParameterIdentifier = (javaTypeIdentifier v),       Syntax.typeParameterBound = Nothing} -javaTypeToJavaFormalParameter :: Syntax.Type -> Core.Name -> Syntax.FormalParameter+javaTypeToJavaFormalParameter :: Syntax.Type -> Model.Name -> Syntax.FormalParameter javaTypeToJavaFormalParameter jt fname =     Syntax.FormalParameterSimple (Syntax.FormalParameter_Simple {       Syntax.formalParameter_SimpleModifiers = [],@@ -758,14 +758,14 @@       Syntax.variableDeclaratorIdIdentifier = id,       Syntax.variableDeclaratorIdDims = Nothing} -javaVariableName :: Core.Name -> Syntax.Identifier-javaVariableName name = javaIdentifier (Names.localNameOf name)+javaVariableName :: Model.Name -> Syntax.Identifier+javaVariableName name = javaIdentifier (CoreNames.localNameOf name) -lookupJavaVarName :: Environment.Aliases -> Core.Name -> Core.Name+lookupJavaVarName :: Environment.Aliases -> Model.Name -> Model.Name lookupJavaVarName aliases name =     Optionals.match (Maps.lookup name (Environment.aliasesVarRenames aliases)) name (\renamed -> renamed) -makeConstructor :: Environment.Aliases -> Core.Name -> Bool -> [Syntax.FormalParameter] -> [Syntax.BlockStatement] -> Syntax.ClassBodyDeclaration+makeConstructor :: Environment.Aliases -> Model.Name -> Bool -> [Syntax.FormalParameter] -> [Syntax.BlockStatement] -> Syntax.ClassBodyDeclaration makeConstructor aliases elName private params stmts =        let nm = Syntax.SimpleTypeName (nameToJavaTypeIdentifier aliases False elName)@@ -823,7 +823,7 @@         Syntax.methodInvocationHeader = header,         Syntax.methodInvocationArguments = args}) -nameToJavaClassType :: Environment.Aliases -> Bool -> [Syntax.TypeArgument] -> Core.Name -> Maybe String -> Syntax.ClassType+nameToJavaClassType :: Environment.Aliases -> Bool -> [Syntax.TypeArgument] -> Model.Name -> Maybe String -> Syntax.ClassType nameToJavaClassType aliases qualify args name mlocal =        let result = nameToQualifiedJavaName aliases qualify name mlocal@@ -835,30 +835,30 @@         Syntax.classTypeIdentifier = id,         Syntax.classTypeArguments = args} -nameToJavaName :: Environment.Aliases -> Core.Name -> Syntax.Identifier+nameToJavaName :: Environment.Aliases -> Model.Name -> Syntax.Identifier nameToJavaName aliases name = -      let qn = Names.qualifyName name+      let qn = CoreNames.qualifyName name           ns_ = Util.qualifiedNameModuleName qn           local = Util.qualifiedNameLocal qn-      in (Logic.ifElse (isEscaped (Core.unName name)) (Syntax.Identifier (sanitizeJavaName local)) (Optionals.match ns_ (Syntax.Identifier local) (\gname ->+      in (Logic.ifElse (isEscaped (Model.unName name)) (Syntax.Identifier (sanitizeJavaName local)) (Optionals.match ns_ (Syntax.Identifier local) (\gname ->         let parts =                 Optionals.match (Maps.lookup gname (Environment.aliasesPackages aliases)) (Strings.splitOn "." (Packaging.unModuleName gname)) (\pkgName -> Lists.map (\i -> Syntax.unIdentifier i) (Syntax.unPackageName pkgName))             allParts = Lists.concat2 parts [                   sanitizeJavaName local]         in (Syntax.Identifier (Strings.join "." allParts))))) -nameToJavaReferenceType :: Environment.Aliases -> Bool -> [Syntax.TypeArgument] -> Core.Name -> Maybe String -> Syntax.ReferenceType+nameToJavaReferenceType :: Environment.Aliases -> Bool -> [Syntax.TypeArgument] -> Model.Name -> Maybe String -> Syntax.ReferenceType nameToJavaReferenceType aliases qualify args name mlocal =     Syntax.ReferenceTypeClassOrInterface (Syntax.ClassOrInterfaceTypeClass (nameToJavaClassType aliases qualify args name mlocal)) -nameToJavaTypeIdentifier :: Environment.Aliases -> Bool -> Core.Name -> Syntax.TypeIdentifier+nameToJavaTypeIdentifier :: Environment.Aliases -> Bool -> Model.Name -> Syntax.TypeIdentifier nameToJavaTypeIdentifier aliases qualify name = Pairs.first (nameToQualifiedJavaName aliases qualify name Nothing) -nameToQualifiedJavaName :: Environment.Aliases -> Bool -> Core.Name -> Maybe String -> (Syntax.TypeIdentifier, Syntax.ClassTypeQualifier)+nameToQualifiedJavaName :: Environment.Aliases -> Bool -> Model.Name -> Maybe String -> (Syntax.TypeIdentifier, Syntax.ClassTypeQualifier) nameToQualifiedJavaName aliases qualify name mlocal = -      let qn = Names.qualifyName name+      let qn = CoreNames.qualifyName name           ns_ = Util.qualifiedNameModuleName qn           local = Util.qualifiedNameLocal qn           alias =@@ -896,9 +896,10 @@ overlayLibPairFor :: String -> (Packaging.ModuleName, Syntax.PackageName) overlayLibPairFor sub =     (-      Packaging.ModuleName (Strings.concat2 "hydra.lib." sub),+      Packaging.ModuleName (Strings.concat2 "hydra.core.lib." sub),       (JavaNames.javaPackageName (Lists.concat2 [         "hydra",+        "core",         "overlay",         "java",         "lib"] [@@ -942,7 +943,7 @@                     Syntax.classTypeIdentifier = (javaTypeIdentifier JavaNames.visitorName),                     Syntax.classTypeArguments = (Lists.concat2 typeArgs [                       Syntax.TypeArgumentReference visitorTypeVariable])})-          param = javaTypeToJavaFormalParameter ref (Core.Name "visitor")+          param = javaTypeToJavaFormalParameter ref (Model.Name "visitor")           result = javaTypeToJavaResult (Syntax.TypeReference visitorTypeVariable)           returnExpr =                   javaMethodInvocationToJavaExpression (methodInvocationStatic (Syntax.Identifier "visitor") (Syntax.Identifier JavaNames.visitMethodName) [@@ -952,7 +953,7 @@       in (methodDeclaration mods tparams anns JavaNames.acceptMethodName [         param] result body) -toAssignStmt :: Core.Name -> Syntax.Statement+toAssignStmt :: Model.Name -> Syntax.Statement toAssignStmt fname =        let id = fieldNameToJavaIdentifier fname@@ -995,14 +996,14 @@ unescape :: String -> String unescape s = Strings.fromList (Lists.drop 1 (Strings.toList s)) -uniqueVarName :: Environment.Aliases -> Core.Name -> Core.Name+uniqueVarName :: Environment.Aliases -> Model.Name -> Model.Name uniqueVarName aliases name =-    Logic.ifElse (Sets.member name (Environment.aliasesInScopeJavaVars aliases)) (uniqueVarName_go aliases (Core.unName name) 2) name+    Logic.ifElse (Sets.member name (Environment.aliasesInScopeJavaVars aliases)) (uniqueVarName_go aliases (Model.unName name) 2) name -uniqueVarName_go :: Environment.Aliases -> String -> Int -> Core.Name+uniqueVarName_go :: Environment.Aliases -> String -> Int -> Model.Name uniqueVarName_go aliases base n = -      let candidate = Core.Name (Strings.concat2 base (Literals.printInt32 n))+      let candidate = Model.Name (Strings.concat2 base (Literals.printInt32 n))       in (Logic.ifElse (Sets.member candidate (Environment.aliasesInScopeJavaVars aliases)) (uniqueVarName_go aliases base (Math.add n 1)) candidate)  varDeclarationStatement :: Syntax.Identifier -> Syntax.Expression -> Syntax.BlockStatement@@ -1024,22 +1025,22 @@         Syntax.localVariableDeclarationDeclarators = [           vdec]}))) -variableToJavaIdentifier :: Core.Name -> Syntax.Identifier+variableToJavaIdentifier :: Model.Name -> Syntax.Identifier variableToJavaIdentifier name = -      let v = Core.unName name+      let v = Model.unName name       in (Logic.ifElse (Equality.equal v "_") (Syntax.Identifier "ignored") (Syntax.Identifier (sanitizeJavaName v))) -variantClassName :: Bool -> Core.Name -> Core.Name -> Core.Name+variantClassName :: Bool -> Model.Name -> Model.Name -> Model.Name variantClassName qualify elName fname = -      let qn = Names.qualifyName elName+      let qn = CoreNames.qualifyName elName           ns_ = Util.qualifiedNameModuleName qn           local = Util.qualifiedNameLocal qn-          flocal = Formatting.capitalize (Core.unName fname)+          flocal = Formatting.capitalize (Model.unName fname)           local1 =                   Logic.ifElse qualify (Strings.concat2 (Strings.concat2 local ".") flocal) (Logic.ifElse (Equality.equal flocal local) (Strings.concat2 flocal "_") flocal)-      in (Names.unqualifyName (Util.QualifiedName {+      in (CoreNames.unqualifyName (Util.QualifiedName {         Util.qualifiedNameModuleName = ns_,         Util.qualifiedNameLocal = local1}))