AllModellers

          flowchart TD
          AllModellers("AllModellers")

          AllModellers -->|"TypesModellers"| ITypesModeller
          ITypesModeller("ITypesModeller")

          ITypesModeller -->|"="| TypesModeller
          TypesModeller("TypesModeller")

          TypesModeller -->|"_typeModellers"| ITypeModeller
          ITypeModeller("ITypeModeller")

          ITypeModeller -->|"="| SpecialTypeModeller
          CategoryModeller("CategoryModeller")

          CategoryModeller -->|"_modifier"| ModifierModel
          ConstantModeller("ConstantModeller")

          ConstantModeller -->|"_value"| SimpleModel
        

DirectiveModeller

          flowchart TD
          DirectiveModeller("DirectiveModeller")

          DirectiveModeller -->|"_parameter"| InputParamModel
        

IModeller(IAstAlternate,AlternateModel)

          flowchart TD
          IModeller_IAstAlternate_AlternateModel_("IModeller(IAstAlternate,AlternateModel)")

          IModeller_IAstAlternate_AlternateModel_ -->|"="| AlternateModeller
          AlternateModeller("AlternateModeller")

          AlternateModeller -->|"_collection"| CollectionModel
          AlternateModeller -->|"_objBase"| ObjBaseModel
          IModeller_IAstArg_OpArgumentModel_("IModeller(IAstArg,OpArgumentModel)")

          IModeller_IAstArg_OpArgumentModel_ -->|"="| OpArgumentModeller
          IModeller_IAstConstant_ConstantModel_("IModeller(IAstConstant,ConstantModel)")

          IModeller_IAstConstant_ConstantModel_ -->|"="| ConstantModeller
          ConstantModeller("ConstantModeller")

          ConstantModeller -->|"_value"| SimpleModel
          IModeller_IAstDirective_OpDirectiveModel_("IModeller(IAstDirective,OpDirectiveModel)")

          IModeller_IAstDirective_OpDirectiveModel_ -->|"="| OpDirectiveModeller
        

IModeller(IAstDomain(IAstDomainLabel),BaseDomainModel(DomainLabelModel))

          flowchart TD
          IModeller_IAstDomain_IAstDomainLabel__BaseDomainModel_DomainLabelModel__("IModeller(IAstDomain(IAstDomainLabel),BaseDomainModel(DomainLabelModel))")

          IModeller_IAstDomain_IAstDomainLabel__BaseDomainModel_DomainLabelModel__ -->|"="| DomainEnumModeller
          IModeller_IAstDomain_IAstDomainRange__BaseDomainModel_DomainRangeModel__("IModeller(IAstDomain(IAstDomainRange),BaseDomainModel(DomainRangeModel))")

          IModeller_IAstDomain_IAstDomainRange__BaseDomainModel_DomainRangeModel__ -->|"="| DomainNumberModeller
          IModeller_IAstDomain_IAstDomainRegex__BaseDomainModel_DomainRegexModel__("IModeller(IAstDomain(IAstDomainRegex),BaseDomainModel(DomainRegexModel))")

          IModeller_IAstDomain_IAstDomainRegex__BaseDomainModel_DomainRegexModel__ -->|"="| DomainStringModeller
          IModeller_IAstDomain_IAstDomainTrueFalse__BaseDomainModel_DomainTrueFalseModel__("IModeller(IAstDomain(IAstDomainTrueFalse),BaseDomainModel(DomainTrueFalseModel))")

          IModeller_IAstDomain_IAstDomainTrueFalse__BaseDomainModel_DomainTrueFalseModel__ -->|"="| DomainBooleanModeller
          IModeller_IAstDualField_DualFieldModel_("IModeller(IAstDualField,DualFieldModel)")

          IModeller_IAstDualField_DualFieldModel_ -->|"="| DualFieldModeller
          DualFieldModeller("DualFieldModeller")

          DualFieldModeller -->|"_modifier"| IModifierModeller
          DualFieldModeller -->|"_objBase"| ObjBaseModel
          IModifierModeller("IModifierModeller")

          IModifierModeller -->|"="| ModifierModeller
          ModifierModeller("ModifierModeller")

          ModifierModeller -->|"Existing"| IModifierModeller
        

IModeller(IAstEnum,TypeEnumModel)

          flowchart TD
          IModeller_IAstEnum_TypeEnumModel_("IModeller(IAstEnum,TypeEnumModel)")

          IModeller_IAstEnum_TypeEnumModel_ -->|"="| EnumModeller
          IModeller_IAstEnumValue_EnumValueModel_("IModeller(IAstEnumValue,EnumValueModel)")

          IModeller_IAstEnumValue_EnumValueModel_ -->|"="| EnumValueModeller
          IModeller_IAstFieldKey_SimpleModel_("IModeller(IAstFieldKey,SimpleModel)")

          IModeller_IAstFieldKey_SimpleModel_ -->|"="| SimpleModeller
          SimpleModeller("SimpleModeller")

          SimpleModeller -->|"_enumValue"| EnumValueModel
          IModeller_IAstFragment_OpFragmentModel_("IModeller(IAstFragment,OpFragmentModel)")

          IModeller_IAstFragment_OpFragmentModel_ -->|"="| OpFragmentModeller
          IModeller_IAstInputField_InputFieldModel_("IModeller(IAstInputField,InputFieldModel)")

          IModeller_IAstInputField_InputFieldModel_ -->|"="| InputFieldModeller
          InputFieldModeller("InputFieldModeller")

          InputFieldModeller -->|"_constant"| ConstantModel
          InputFieldModeller -->|"_modifier"| IModifierModeller
          InputFieldModeller -->|"_objBase"| ObjBaseModel
          IModifierModeller("IModifierModeller")

          IModifierModeller -->|"="| ModifierModeller
        

IModeller(IAstInputParam,InputParamModel)

          flowchart TD
          IModeller_IAstInputParam_InputParamModel_("IModeller(IAstInputParam,InputParamModel)")

          IModeller_IAstInputParam_InputParamModel_ -->|"="| InputParamModeller
          InputParamModeller("InputParamModeller")

          InputParamModeller -->|"_constant"| ConstantModel
          InputParamModeller -->|"_modifier"| IModifierModeller
          IModifierModeller("IModifierModeller")

          IModifierModeller -->|"="| ModifierModeller
          IModeller_IAstModifier_CollectionModel_("IModeller(IAstModifier,CollectionModel)")

          IModeller_IAstModifier_CollectionModel_ -->|"="| ModifierModeller
          ModifierModeller("ModifierModeller")

          ModifierModeller -->|"Existing"| IModifierModeller
          IModeller_IAstModifier_ModifierModel_("IModeller(IAstModifier,ModifierModel)")

          IModeller_IAstModifier_ModifierModel_ -->|"="| ModifierModeller
          ModifierModeller("ModifierModeller")

          ModifierModeller -->|"Existing"| IModifierModeller
        

IModeller(IAstObjBase,ObjBaseModel)

          flowchart TD
          IModeller_IAstObjBase_ObjBaseModel_("IModeller(IAstObjBase,ObjBaseModel)")

          IModeller_IAstObjBase_ObjBaseModel_ -->|"="| ObjBaseModeller
          ObjBaseModeller("ObjBaseModeller")

          ObjBaseModeller -->|"_objArg"| TypeArgModel
          IModeller_IAstObject_IAstDualField__TypeDualModel_("IModeller(IAstObject(IAstDualField),TypeDualModel)")

          IModeller_IAstObject_IAstDualField__TypeDualModel_ -->|"="| DualModeller
          DualModeller("DualModeller")

          DualModeller -->|"_alternate"| AlternateModel
          DualModeller -->|"_base"| ObjBaseModel
          DualModeller -->|"_field"| DualFieldModel
          DualModeller -->|"_typeParams"| TypeParamModel
          IModeller_IAstObject_IAstInputField__TypeInputModel_("IModeller(IAstObject(IAstInputField),TypeInputModel)")

          IModeller_IAstObject_IAstInputField__TypeInputModel_ -->|"="| InputModeller
          InputModeller("InputModeller")

          InputModeller -->|"_alternate"| AlternateModel
          InputModeller -->|"_base"| ObjBaseModel
          InputModeller -->|"_field"| InputFieldModel
          InputModeller -->|"_typeParams"| TypeParamModel
        

IModeller(IAstObject(IAstOutputField),TypeOutputModel)

          flowchart TD
          IModeller_IAstObject_IAstOutputField__TypeOutputModel_("IModeller(IAstObject(IAstOutputField),TypeOutputModel)")

          IModeller_IAstObject_IAstOutputField__TypeOutputModel_ -->|"="| OutputModeller
          OutputModeller("OutputModeller")

          OutputModeller -->|"_alternate"| AlternateModel
          OutputModeller -->|"_base"| ObjBaseModel
          OutputModeller -->|"_field"| OutputFieldModel
          OutputModeller -->|"_typeParams"| TypeParamModel
        

IModeller(IAstOutputField,OutputFieldModel)

          flowchart TD
          IModeller_IAstOutputField_OutputFieldModel_("IModeller(IAstOutputField,OutputFieldModel)")

          IModeller_IAstOutputField_OutputFieldModel_ -->|"="| OutputFieldModeller
          OutputFieldModeller("OutputFieldModeller")

          OutputFieldModeller -->|"_modifier"| IModifierModeller
          OutputFieldModeller -->|"_objBase"| ObjBaseModel
          OutputFieldModeller -->|"_parameter"| InputParamModel
          IModifierModeller("IModifierModeller")

          IModifierModeller -->|"="| ModifierModeller
          IModeller_IAstSchema_SchemaModel_("IModeller(IAstSchema,SchemaModel)")

          IModeller_IAstSchema_SchemaModel_ -->|"="| SchemaModeller
          SchemaModeller("SchemaModeller")

          SchemaModeller -->|"_category"| CategoryModel
          SchemaModeller -->|"_directive"| DirectiveModel
          SchemaModeller -->|"_operation"| OperationModel
          SchemaModeller -->|"_setting"| SettingModel
          SchemaModeller -->|"_types"| ITypesModeller
          ITypesModeller("ITypesModeller")

          ITypesModeller -->|"="| TypesModeller
        

IModeller(IAstSchemaCategory,CategoryModel)

          flowchart TD
          IModeller_IAstSchemaCategory_CategoryModel_("IModeller(IAstSchemaCategory,CategoryModel)")

          IModeller_IAstSchemaCategory_CategoryModel_ -->|"="| CategoryModeller
          CategoryModeller("CategoryModeller")

          CategoryModeller -->|"_modifier"| ModifierModel
          IModeller_IAstSchemaDirective_DirectiveModel_("IModeller(IAstSchemaDirective,DirectiveModel)")

          IModeller_IAstSchemaDirective_DirectiveModel_ -->|"="| DirectiveModeller
          DirectiveModeller("DirectiveModeller")

          DirectiveModeller -->|"_parameter"| InputParamModel
          IModeller_IAstSchemaOperation_OperationModel_("IModeller(IAstSchemaOperation,OperationModel)")

          IModeller_IAstSchemaOperation_OperationModel_ -->|"="| OperationModeller
          OperationModeller("OperationModeller")

          OperationModeller -->|"_directive"| OpDirectiveModel
          OperationModeller -->|"_fragment"| OpFragmentModel
          OperationModeller -->|"_modifier"| ModifierModel
          OperationModeller -->|"_result"| OpResultModel
          OperationModeller -->|"_selection"| OpSelectionModel
          OperationModeller -->|"_variable"| OpVariableModel
        

IModeller(IAstSchemaSetting,SettingModel)

          flowchart TD
          IModeller_IAstSchemaSetting_SettingModel_("IModeller(IAstSchemaSetting,SettingModel)")

          IModeller_IAstSchemaSetting_SettingModel_ -->|"="| SettingModeller
          SettingModeller("SettingModeller")

          SettingModeller -->|"_constant"| ConstantModel
          IModeller_IAstSelection_OpSelectionModel_("IModeller(IAstSelection,OpSelectionModel)")

          IModeller_IAstSelection_OpSelectionModel_ -->|"="| OpSelectionModeller
          OpSelectionModeller("OpSelectionModeller")

          OpSelectionModeller -->|"_argument"| OpArgumentModel
          OpSelectionModeller -->|"_directive"| OpDirectiveModel
          OpSelectionModeller -->|"_modifier"| ModifierModel
          IModeller_IAstType_BaseTypeModel_("IModeller(IAstType,BaseTypeModel)")

          IModeller_IAstType_BaseTypeModel_ -->|"="| TypesModeller
          TypesModeller("TypesModeller")

          TypesModeller -->|"_typeModellers"| ITypeModeller
        

IModeller(IAstTypeArg,TypeArgModel)

          flowchart TD
          IModeller_IAstTypeArg_TypeArgModel_("IModeller(IAstTypeArg,TypeArgModel)")

          IModeller_IAstTypeArg_TypeArgModel_ -->|"="| TypeArgModeller
          TypeArgModeller("TypeArgModeller")

          TypeArgModeller -->|"_enumValue"| EnumValueModel
          IModeller_IAstTypeParam_TypeParamModel_("IModeller(IAstTypeParam,TypeParamModel)")

          IModeller_IAstTypeParam_TypeParamModel_ -->|"="| TypeParamModeller
          IModeller_IAstTypeRef_OpResultModel_("IModeller(IAstTypeRef,OpResultModel)")

          IModeller_IAstTypeRef_OpResultModel_ -->|"="| OpResultModeller
          IModeller_IAstTypeSpecial_SpecialTypeModel_("IModeller(IAstTypeSpecial,SpecialTypeModel)")

          IModeller_IAstTypeSpecial_SpecialTypeModel_ -->|"="| SpecialTypeModeller
          IModeller_IAstUnion_TypeUnionModel_("IModeller(IAstUnion,TypeUnionModel)")

          IModeller_IAstUnion_TypeUnionModel_ -->|"="| UnionModeller
        

IModeller(IAstVariable,OpVariableModel)

          flowchart TD
          IModeller_IAstVariable_OpVariableModel_("IModeller(IAstVariable,OpVariableModel)")

          IModeller_IAstVariable_OpVariableModel_ -->|"="| OpVariableModeller
          ModellerRepositoryBuilder("ModellerRepositoryBuilder")

          ModellerRepositoryBuilder -->|"TypeModellerFor"| SpecialTypeModel