packages feed

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

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

-- | DSL functions for hydra.ext.atlas

module Hydra.Ext.Dsl.Atlas where

import qualified Hydra.Core.Model as Model
import qualified Hydra.Core.Typed as Typed
import qualified Hydra.Ext.Atlas as Atlas
import qualified Hydra.Rdf.Xml.Schema as Schema
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
import Data.Void
import qualified Data.Int as I
import qualified Data.Map as M
import qualified Data.Set as S

-- | DSL constructor for hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDef :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefCardinality) -> Typed.TypedTerm Int -> Typed.TypedTerm Int -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Int -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefIndexType) -> Typed.TypedTerm [Atlas.AtlasConstraintDef] -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDef name typeName isOptional cardinality valuesMinCount valuesMaxCount isUnique isIndexable includeInNotification defaultValue description searchWeight indexType constraints options displayName =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Typed.unTypedTerm typeName)},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Typed.unTypedTerm isOptional)},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Typed.unTypedTerm cardinality)},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Typed.unTypedTerm valuesMinCount)},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Typed.unTypedTerm valuesMaxCount)},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Typed.unTypedTerm isUnique)},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Typed.unTypedTerm isIndexable)},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Typed.unTypedTerm includeInNotification)},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm defaultValue)},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Typed.unTypedTerm searchWeight)},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Typed.unTypedTerm indexType)},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Typed.unTypedTerm constraints)},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Typed.unTypedTerm options)},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Typed.unTypedTerm displayName)}]}))

-- | DSL name token for hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefAtlasAttributeDef :: Typed.TypedName Atlas.AtlasAttributeDef
atlasAttributeDefAtlasAttributeDef = Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasAttributeDef")

-- | DSL accessor for the cardinality field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefCardinality :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefCardinality)
atlasAttributeDefCardinality x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "cardinality")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalityAtlasAttributeDefCardinality :: Typed.TypedName Atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalityAtlasAttributeDefCardinality =
    Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasAttributeDefCardinality")

-- | DSL injection for the list variant of hydra.ext.atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalityList :: Typed.TypedTerm Atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalityList =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDefCardinality"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "list"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the set variant of hydra.ext.atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalitySet :: Typed.TypedTerm Atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalitySet =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDefCardinality"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "set"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the single variant of hydra.ext.atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalitySingle :: Typed.TypedTerm Atlas.AtlasAttributeDefCardinality
atlasAttributeDefCardinalitySingle =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDefCardinality"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "single"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL accessor for the constraints field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefConstraints :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm [Atlas.AtlasConstraintDef]
atlasAttributeDefConstraints x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "constraints")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the defaultValue field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefDefaultValue :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String)
atlasAttributeDefDefaultValue x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "defaultValue")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the description field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefDescription :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String)
atlasAttributeDefDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the displayName field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefDisplayName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String)
atlasAttributeDefDisplayName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "displayName")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the includeInNotification field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefIncludeInNotification :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool
atlasAttributeDefIncludeInNotification x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "includeInNotification")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the indexType field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefIndexType :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefIndexType)
atlasAttributeDefIndexType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "indexType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeAtlasAttributeDefIndexType :: Typed.TypedName Atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeAtlasAttributeDefIndexType =
    Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasAttributeDefIndexType")

-- | DSL injection for the default variant of hydra.ext.atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeDefault :: Typed.TypedTerm Atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeDefault =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDefIndexType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "default"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the string variant of hydra.ext.atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeString :: Typed.TypedTerm Atlas.AtlasAttributeDefIndexType
atlasAttributeDefIndexTypeString =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDefIndexType"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "string"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL accessor for the isIndexable field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefIsIndexable :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool
atlasAttributeDefIsIndexable x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "isIndexable")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the isOptional field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefIsOptional :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool
atlasAttributeDefIsOptional x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "isOptional")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the isUnique field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefIsUnique :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool
atlasAttributeDefIsUnique x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "isUnique")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the name field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String)
atlasAttributeDefName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the options field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefOptions :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (M.Map String String)
atlasAttributeDefOptions x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "options")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the searchWeight field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefSearchWeight :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int
atlasAttributeDefSearchWeight x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "searchWeight")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the typeName field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefTypeName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String)
atlasAttributeDefTypeName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "typeName")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the valuesMaxCount field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefValuesMaxCount :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int
atlasAttributeDefValuesMaxCount x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the valuesMinCount field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefValuesMinCount :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int
atlasAttributeDefValuesMinCount x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
        Model.projectionFieldName = (Model.Name "valuesMinCount")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the cardinality field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithCardinality :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefCardinality) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithCardinality original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the constraints field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithConstraints :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm [Atlas.AtlasConstraintDef] -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithConstraints original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the defaultValue field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithDefaultValue :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithDefaultValue original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the description field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithDescription :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the displayName field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithDisplayName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithDisplayName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the includeInNotification field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithIncludeInNotification :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithIncludeInNotification original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the indexType field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithIndexType :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe Atlas.AtlasAttributeDefIndexType) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithIndexType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the isIndexable field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithIsIndexable :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithIsIndexable original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the isOptional field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithIsOptional :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithIsOptional original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the isUnique field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithIsUnique :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithIsUnique original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the name field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the options field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithOptions :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithOptions original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the searchWeight field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithSearchWeight :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithSearchWeight original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the typeName field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithTypeName :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithTypeName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the valuesMaxCount field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithValuesMaxCount :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithValuesMaxCount original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMinCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the valuesMinCount field of hydra.ext.atlas.AtlasAttributeDef
atlasAttributeDefWithValuesMinCount :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Int -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasAttributeDefWithValuesMinCount original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "typeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isOptional"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isOptional")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "cardinality"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "cardinality")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMinCount"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "valuesMaxCount"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "valuesMaxCount")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isUnique"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isUnique")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isIndexable"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "isIndexable")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "includeInNotification"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "includeInNotification")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "defaultValue"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "defaultValue")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "searchWeight"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "searchWeight")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "indexType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "indexType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "constraints"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "constraints")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "displayName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasAttributeDef"),
              Model.projectionFieldName = (Model.Name "displayName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDef :: Typed.TypedTerm (Maybe Atlas.TypeCategory) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe Schema.DateTime) -> Typed.TypedTerm (Maybe Schema.DateTime) -> Typed.TypedTerm (Maybe I.Int64) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDef category guid createdBy updatedBy createTime updateTime version name description typeVersion serviceType options =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Typed.unTypedTerm category)},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Typed.unTypedTerm guid)},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Typed.unTypedTerm createdBy)},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Typed.unTypedTerm updatedBy)},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Typed.unTypedTerm createTime)},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Typed.unTypedTerm updateTime)},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Typed.unTypedTerm version)},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Typed.unTypedTerm name)},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Typed.unTypedTerm description)},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Typed.unTypedTerm typeVersion)},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Typed.unTypedTerm serviceType)},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Typed.unTypedTerm options)}]}))

-- | DSL name token for hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefAtlasBaseTypeDef :: Typed.TypedName Atlas.AtlasBaseTypeDef
atlasBaseTypeDefAtlasBaseTypeDef = Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef")

-- | DSL accessor for the category field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefCategory :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Atlas.TypeCategory)
atlasBaseTypeDefCategory x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "category")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the createTime field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefCreateTime :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Schema.DateTime)
atlasBaseTypeDefCreateTime x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "createTime")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the createdBy field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefCreatedBy :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefCreatedBy x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "createdBy")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the description field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefDescription :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefDescription x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "description")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the guid field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefGuid :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefGuid x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "guid")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the name field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefName :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "name")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the options field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefOptions :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (M.Map String String)
atlasBaseTypeDefOptions x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "options")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the serviceType field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefServiceType :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefServiceType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "serviceType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the typeVersion field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefTypeVersion :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefTypeVersion x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "typeVersion")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the updateTime field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefUpdateTime :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Schema.DateTime)
atlasBaseTypeDefUpdateTime x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "updateTime")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the updatedBy field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefUpdatedBy :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String)
atlasBaseTypeDefUpdatedBy x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "updatedBy")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the version field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefVersion :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe I.Int64)
atlasBaseTypeDefVersion x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
        Model.projectionFieldName = (Model.Name "version")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the category field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCategory :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Atlas.TypeCategory) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCategory original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the createTime field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCreateTime :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Schema.DateTime) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCreateTime original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the createdBy field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCreatedBy :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithCreatedBy original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the description field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithDescription :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithDescription original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the guid field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithGuid :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithGuid original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the name field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithName :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the options field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithOptions :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithOptions original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the serviceType field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithServiceType :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithServiceType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the typeVersion field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithTypeVersion :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithTypeVersion original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the updateTime field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithUpdateTime :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe Schema.DateTime) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithUpdateTime original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the updatedBy field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithUpdatedBy :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithUpdatedBy original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "version")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the version field of hydra.ext.atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithVersion :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm (Maybe I.Int64) -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasBaseTypeDefWithVersion original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "category"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "category")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "guid"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "guid")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createdBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createdBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updatedBy"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updatedBy")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "createTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "createTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "updateTime"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "updateTime")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "version"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "name"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "name")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "description"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "description")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "typeVersion"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "typeVersion")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "serviceType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "serviceType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "options"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasBaseTypeDef"),
              Model.projectionFieldName = (Model.Name "options")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDef :: Typed.TypedTerm (Maybe String) -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm Atlas.AtlasConstraintDef
atlasConstraintDef type_ params =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "type"),
          Model.fieldTerm = (Typed.unTypedTerm type_)},
        Model.Field {
          Model.fieldName = (Model.Name "params"),
          Model.fieldTerm = (Typed.unTypedTerm params)}]}))

-- | DSL name token for hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDefAtlasConstraintDef :: Typed.TypedName Atlas.AtlasConstraintDef
atlasConstraintDefAtlasConstraintDef = Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasConstraintDef")

-- | DSL accessor for the params field of hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDefParams :: Typed.TypedTerm Atlas.AtlasConstraintDef -> Typed.TypedTerm (M.Map String String)
atlasConstraintDefParams x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
        Model.projectionFieldName = (Model.Name "params")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the type field of hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDefType :: Typed.TypedTerm Atlas.AtlasConstraintDef -> Typed.TypedTerm (Maybe String)
atlasConstraintDefType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
        Model.projectionFieldName = (Model.Name "type")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the params field of hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDefWithParams :: Typed.TypedTerm Atlas.AtlasConstraintDef -> Typed.TypedTerm (M.Map String String) -> Typed.TypedTerm Atlas.AtlasConstraintDef
atlasConstraintDefWithParams original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
      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.ext.atlas.AtlasConstraintDef"),
              Model.projectionFieldName = (Model.Name "type")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "params"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the type field of hydra.ext.atlas.AtlasConstraintDef
atlasConstraintDefWithType :: Typed.TypedTerm Atlas.AtlasConstraintDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasConstraintDef
atlasConstraintDefWithType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "type"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "params"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasConstraintDef"),
              Model.projectionFieldName = (Model.Name "params")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.atlas.AtlasEntityDef
atlasEntityDef :: Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm [Atlas.AtlasRelationshipAttributeDef] -> Typed.TypedTerm (M.Map String [Atlas.AtlasAttributeDef]) -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDef asAtlasStruct superTypes subTypes relationshipAttributeDefs businessAttributeDefs =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Typed.unTypedTerm asAtlasStruct)},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Typed.unTypedTerm superTypes)},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Typed.unTypedTerm subTypes)},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm relationshipAttributeDefs)},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm businessAttributeDefs)}]}))

-- | DSL accessor for the asAtlasStruct field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefAsAtlasStruct :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm Atlas.AtlasStructDef
atlasEntityDefAsAtlasStruct x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
        Model.projectionFieldName = (Model.Name "asAtlasStruct")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.atlas.AtlasEntityDef
atlasEntityDefAtlasEntityDef :: Typed.TypedName Atlas.AtlasEntityDef
atlasEntityDefAtlasEntityDef = Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasEntityDef")

-- | DSL accessor for the businessAttributeDefs field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefBusinessAttributeDefs :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (M.Map String [Atlas.AtlasAttributeDef])
atlasEntityDefBusinessAttributeDefs x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
        Model.projectionFieldName = (Model.Name "businessAttributeDefs")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the relationshipAttributeDefs field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefRelationshipAttributeDefs :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm [Atlas.AtlasRelationshipAttributeDef]
atlasEntityDefRelationshipAttributeDefs x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
        Model.projectionFieldName = (Model.Name "relationshipAttributeDefs")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the subTypes field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefSubTypes :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (S.Set String)
atlasEntityDefSubTypes x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
        Model.projectionFieldName = (Model.Name "subTypes")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the superTypes field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefSuperTypes :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (S.Set String)
atlasEntityDefSuperTypes x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
        Model.projectionFieldName = (Model.Name "superTypes")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the asAtlasStruct field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefWithAsAtlasStruct :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDefWithAsAtlasStruct original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "superTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "subTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "relationshipAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "businessAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the businessAttributeDefs field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefWithBusinessAttributeDefs :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (M.Map String [Atlas.AtlasAttributeDef]) -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDefWithBusinessAttributeDefs original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "asAtlasStruct")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "superTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "subTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "relationshipAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the relationshipAttributeDefs field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefWithRelationshipAttributeDefs :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm [Atlas.AtlasRelationshipAttributeDef] -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDefWithRelationshipAttributeDefs original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "asAtlasStruct")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "superTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "subTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "businessAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the subTypes field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefWithSubTypes :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDefWithSubTypes original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "asAtlasStruct")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "superTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "relationshipAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "businessAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the superTypes field of hydra.ext.atlas.AtlasEntityDef
atlasEntityDefWithSuperTypes :: Typed.TypedTerm Atlas.AtlasEntityDef -> Typed.TypedTerm (S.Set String) -> Typed.TypedTerm Atlas.AtlasEntityDef
atlasEntityDefWithSuperTypes original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasStruct"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "asAtlasStruct")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "superTypes"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "subTypes"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "subTypes")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "relationshipAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "businessAttributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasEntityDef"),
              Model.projectionFieldName = (Model.Name "businessAttributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDef :: Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDef asAtlasAttribute relationshipTypeName isLegacyAttribute =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasAttribute"),
          Model.fieldTerm = (Typed.unTypedTerm asAtlasAttribute)},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipTypeName"),
          Model.fieldTerm = (Typed.unTypedTerm relationshipTypeName)},
        Model.Field {
          Model.fieldName = (Model.Name "isLegacyAttribute"),
          Model.fieldTerm = (Typed.unTypedTerm isLegacyAttribute)}]}))

-- | DSL accessor for the asAtlasAttribute field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefAsAtlasAttribute :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm Atlas.AtlasAttributeDef
atlasRelationshipAttributeDefAsAtlasAttribute x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
        Model.projectionFieldName = (Model.Name "asAtlasAttribute")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefAtlasRelationshipAttributeDef :: Typed.TypedName Atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefAtlasRelationshipAttributeDef =
    Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef")

-- | DSL accessor for the isLegacyAttribute field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefIsLegacyAttribute :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm Bool
atlasRelationshipAttributeDefIsLegacyAttribute x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
        Model.projectionFieldName = (Model.Name "isLegacyAttribute")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL accessor for the relationshipTypeName field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefRelationshipTypeName :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm (Maybe String)
atlasRelationshipAttributeDefRelationshipTypeName x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
        Model.projectionFieldName = (Model.Name "relationshipTypeName")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the asAtlasAttribute field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithAsAtlasAttribute :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm Atlas.AtlasAttributeDef -> Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithAsAtlasAttribute original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasAttribute"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipTypeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "relationshipTypeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isLegacyAttribute"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "isLegacyAttribute")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the isLegacyAttribute field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithIsLegacyAttribute :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm Bool -> Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithIsLegacyAttribute original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasAttribute"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "asAtlasAttribute")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipTypeName"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "relationshipTypeName")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "isLegacyAttribute"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL updater for the relationshipTypeName field of hydra.ext.atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithRelationshipTypeName :: Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Atlas.AtlasRelationshipAttributeDef
atlasRelationshipAttributeDefWithRelationshipTypeName original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasAttribute"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "asAtlasAttribute")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "relationshipTypeName"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "isLegacyAttribute"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasRelationshipAttributeDef"),
              Model.projectionFieldName = (Model.Name "isLegacyAttribute")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL constructor for hydra.ext.atlas.AtlasStructDef
atlasStructDef :: Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm [Atlas.AtlasAttributeDef] -> Typed.TypedTerm Atlas.AtlasStructDef
atlasStructDef asAtlasBaseType attributeDefs =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasBaseType"),
          Model.fieldTerm = (Typed.unTypedTerm asAtlasBaseType)},
        Model.Field {
          Model.fieldName = (Model.Name "attributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm attributeDefs)}]}))

-- | DSL accessor for the asAtlasBaseType field of hydra.ext.atlas.AtlasStructDef
atlasStructDefAsAtlasBaseType :: Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm Atlas.AtlasBaseTypeDef
atlasStructDefAsAtlasBaseType x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
        Model.projectionFieldName = (Model.Name "asAtlasBaseType")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL name token for hydra.ext.atlas.AtlasStructDef
atlasStructDefAtlasStructDef :: Typed.TypedName Atlas.AtlasStructDef
atlasStructDefAtlasStructDef = Typed.TypedName (Model.Name "hydra.ext.atlas.AtlasStructDef")

-- | DSL accessor for the attributeDefs field of hydra.ext.atlas.AtlasStructDef
atlasStructDefAttributeDefs :: Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm [Atlas.AtlasAttributeDef]
atlasStructDefAttributeDefs x =
    Typed.TypedTerm (Model.TermApplication (Model.Application {
      Model.applicationFunction = (Model.TermProject (Model.Projection {
        Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
        Model.projectionFieldName = (Model.Name "attributeDefs")})),
      Model.applicationArgument = (Typed.unTypedTerm x)}))

-- | DSL updater for the asAtlasBaseType field of hydra.ext.atlas.AtlasStructDef
atlasStructDefWithAsAtlasBaseType :: Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm Atlas.AtlasBaseTypeDef -> Typed.TypedTerm Atlas.AtlasStructDef
atlasStructDefWithAsAtlasBaseType original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasBaseType"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)},
        Model.Field {
          Model.fieldName = (Model.Name "attributeDefs"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
              Model.projectionFieldName = (Model.Name "attributeDefs")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))

-- | DSL updater for the attributeDefs field of hydra.ext.atlas.AtlasStructDef
atlasStructDefWithAttributeDefs :: Typed.TypedTerm Atlas.AtlasStructDef -> Typed.TypedTerm [Atlas.AtlasAttributeDef] -> Typed.TypedTerm Atlas.AtlasStructDef
atlasStructDefWithAttributeDefs original newVal =
    Typed.TypedTerm (Model.TermRecord (Model.Record {
      Model.recordTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
      Model.recordFields = [
        Model.Field {
          Model.fieldName = (Model.Name "asAtlasBaseType"),
          Model.fieldTerm = (Model.TermApplication (Model.Application {
            Model.applicationFunction = (Model.TermProject (Model.Projection {
              Model.projectionTypeName = (Model.Name "hydra.ext.atlas.AtlasStructDef"),
              Model.projectionFieldName = (Model.Name "asAtlasBaseType")})),
            Model.applicationArgument = (Typed.unTypedTerm original)}))},
        Model.Field {
          Model.fieldName = (Model.Name "attributeDefs"),
          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))

-- | DSL injection for the array variant of hydra.ext.atlas.TypeCategory
typeCategoryArray :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryArray =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "array"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the businessMetadata variant of hydra.ext.atlas.TypeCategory
typeCategoryBusinessMetadata :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryBusinessMetadata =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "businessMetadata"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the classification variant of hydra.ext.atlas.TypeCategory
typeCategoryClassification :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryClassification =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "classification"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the entity variant of hydra.ext.atlas.TypeCategory
typeCategoryEntity :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryEntity =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "entity"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the enum variant of hydra.ext.atlas.TypeCategory
typeCategoryEnum :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryEnum =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "enum"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the map variant of hydra.ext.atlas.TypeCategory
typeCategoryMap :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryMap =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "map"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the objectIdType variant of hydra.ext.atlas.TypeCategory
typeCategoryObjectIdType :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryObjectIdType =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "objectIdType"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the primitive variant of hydra.ext.atlas.TypeCategory
typeCategoryPrimitive :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryPrimitive =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "primitive"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the relationship variant of hydra.ext.atlas.TypeCategory
typeCategoryRelationship :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryRelationship =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "relationship"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL injection for the struct variant of hydra.ext.atlas.TypeCategory
typeCategoryStruct :: Typed.TypedTerm Atlas.TypeCategory
typeCategoryStruct =
    Typed.TypedTerm (Model.TermInject (Model.Injection {
      Model.injectionTypeName = (Model.Name "hydra.ext.atlas.TypeCategory"),
      Model.injectionField = Model.Field {
        Model.fieldName = (Model.Name "struct"),
        Model.fieldTerm = Model.TermUnit}}))

-- | DSL name token for hydra.ext.atlas.TypeCategory
typeCategoryTypeCategory :: Typed.TypedName Atlas.TypeCategory
typeCategoryTypeCategory = Typed.TypedName (Model.Name "hydra.ext.atlas.TypeCategory")