AstObjectsMerger(IAstDualField)

          flowchart TD
          AstObjectsMerger_IAstDualField_("AstObjectsMerger(IAstDualField)")

          AstObjectsMerger_IAstDualField_ -->|"="| AstObjectsMerger_IAstDualField_
          AstObjectsMerger_IAstInputField_("AstObjectsMerger(IAstInputField)")

          AstObjectsMerger_IAstInputField_ -->|"="| AstObjectsMerger_IAstInputField_
          AstObjectsMerger_IAstOutputField_("AstObjectsMerger(IAstOutputField)")

          AstObjectsMerger_IAstOutputField_ -->|"="| AstObjectsMerger_IAstOutputField_
          IAstAlternate("IAstAlternate")

          IAstAlternate -->|"="| MergeAlternates
          IAstConstant("IAstConstant")

          IAstConstant -->|"="| MergeConstants
          IAstDomain("IAstDomain")

          IAstDomain -->|"="| MergeAllDomains
          MergeAllDomains("MergeAllDomains")

          MergeAllDomains -->|"_all"| IAstDomain
          MergeAllDomains -->|"="| MergeAllDomains
        

IAstDomain(IAstDomainLabel)

          flowchart TD
          IAstDomain_IAstDomainLabel_("IAstDomain(IAstDomainLabel)")

          IAstDomain_IAstDomainLabel_ -->|"="| MergeDomains_DomainLabelAst_IAstDomainLabel_
          MergeDomains_DomainLabelAst_IAstDomainLabel_("MergeDomains(DomainLabelAst,IAstDomainLabel)")

          MergeDomains_DomainLabelAst_IAstDomainLabel_ -->|"="| MergeDomains_DomainLabelAst_IAstDomainLabel_
          IAstDomain_IAstDomainRange_("IAstDomain(IAstDomainRange)")

          IAstDomain_IAstDomainRange_ -->|"="| MergeDomains_DomainRangeAst_IAstDomainRange_
          MergeDomains_DomainRangeAst_IAstDomainRange_("MergeDomains(DomainRangeAst,IAstDomainRange)")

          MergeDomains_DomainRangeAst_IAstDomainRange_ -->|"="| MergeDomains_DomainRangeAst_IAstDomainRange_
          IAstDomain_IAstDomainRegex_("IAstDomain(IAstDomainRegex)")

          IAstDomain_IAstDomainRegex_ -->|"="| MergeDomains_DomainRegexAst_IAstDomainRegex_
          MergeDomains_DomainRegexAst_IAstDomainRegex_("MergeDomains(DomainRegexAst,IAstDomainRegex)")

          MergeDomains_DomainRegexAst_IAstDomainRegex_ -->|"="| MergeDomains_DomainRegexAst_IAstDomainRegex_
        

IAstDomain(IAstDomainTrueFalse)

          flowchart TD
          IAstDomain_IAstDomainTrueFalse_("IAstDomain(IAstDomainTrueFalse)")

          IAstDomain_IAstDomainTrueFalse_ -->|"="| MergeDomains_DomainTrueFalseAst_IAstDomainTrueFalse_
          MergeDomains_DomainTrueFalseAst_IAstDomainTrueFalse_("MergeDomains(DomainTrueFalseAst,IAstDomainTrueFalse)")

          MergeDomains_DomainTrueFalseAst_IAstDomainTrueFalse_ -->|"="| MergeDomains_DomainTrueFalseAst_IAstDomainTrueFalse_
          IAstDomainLabel("IAstDomainLabel")

          IAstDomainLabel -->|"="| MergeDomainLabels
          IAstDomainRange("IAstDomainRange")

          IAstDomainRange -->|"="| MergeDomainRanges
          IAstDomainRegex("IAstDomainRegex")

          IAstDomainRegex -->|"="| MergeDomainRegexes
          IAstDomainTrueFalse("IAstDomainTrueFalse")

          IAstDomainTrueFalse -->|"="| MergeDomainTrueFalse
        

IAstDualField

          flowchart TD
          IAstDualField("IAstDualField")

          IAstDualField -->|"="| MergeDualFields
        

IAstEnum

          flowchart TD
          IAstEnum("IAstEnum")

          IAstEnum -->|"="| MergeEnums
          MergeEnums("MergeEnums")

          MergeEnums -->|"_mergeItems"| IAstEnumLabel
          MergeEnums -->|"="| MergeEnums
          IAstEnumLabel("IAstEnumLabel")

          IAstEnumLabel -->|"="| MergeEnumLabels
          IAstInputField("IAstInputField")

          IAstInputField -->|"="| MergeInputFields
          MergeInputFields("MergeInputFields")

          MergeInputFields -->|"_defaultValue"| IAstConstant
          IAstConstant("IAstConstant")

          IAstConstant -->|"="| MergeConstants
        

IAstInputParam

          flowchart TD
          IAstInputParam("IAstInputParam")

          IAstInputParam -->|"="| MergeInputParams
          MergeInputParams("MergeInputParams")

          MergeInputParams -->|"_defaultValue"| IAstConstant
          IAstConstant("IAstConstant")

          IAstConstant -->|"="| MergeConstants
          IAstObject_IAstDualField_("IAstObject(IAstDualField)")

          IAstObject_IAstDualField_ -->|"="| AstObjectsMerger_IAstDualField_
          AstObjectsMerger_IAstDualField_("AstObjectsMerger(IAstDualField)")

          AstObjectsMerger_IAstDualField_ -->|"="| AstObjectsMerger_IAstDualField_
          IAstObject_IAstInputField_("IAstObject(IAstInputField)")

          IAstObject_IAstInputField_ -->|"="| AstObjectsMerger_IAstInputField_
          AstObjectsMerger_IAstInputField_("AstObjectsMerger(IAstInputField)")

          AstObjectsMerger_IAstInputField_ -->|"="| AstObjectsMerger_IAstInputField_
        

IAstObject(IAstOutputField)

          flowchart TD
          IAstObject_IAstOutputField_("IAstObject(IAstOutputField)")

          IAstObject_IAstOutputField_ -->|"="| AstObjectsMerger_IAstOutputField_
          AstObjectsMerger_IAstOutputField_("AstObjectsMerger(IAstOutputField)")

          AstObjectsMerger_IAstOutputField_ -->|"="| AstObjectsMerger_IAstOutputField_
        

IAstOutputField

          flowchart TD
          IAstOutputField("IAstOutputField")

          IAstOutputField -->|"="| MergeOutputFields
          MergeOutputFields("MergeOutputFields")

          MergeOutputFields -->|"_inputParam"| IAstInputParam
          IAstInputParam("IAstInputParam")

          IAstInputParam -->|"="| MergeInputParams
        

IAstSchema

          flowchart TD
          IAstSchema("IAstSchema")

          IAstSchema -->|"="| MergeSchemas
          MergeSchemas("MergeSchemas")

          MergeSchemas -->|"_astTypes"| IAstType
          MergeSchemas -->|"_categories"| IAstSchemaCategory
          MergeSchemas -->|"_directives"| IAstSchemaDirective
          MergeSchemas -->|"_operations"| IAstSchemaOperation
          MergeSchemas -->|"_options"| IAstSchemaOption
          IAstType("IAstType")

          IAstType -->|"="| MergeAllTypes
          MergeAllTypes("MergeAllTypes")

          MergeAllTypes -->|"_all"| IAstType
          IAstSchemaCategory("IAstSchemaCategory")

          IAstSchemaCategory -->|"="| MergeCategories
          IAstSchemaDirective("IAstSchemaDirective")

          IAstSchemaDirective -->|"="| MergeDirectives
          MergeDirectives("MergeDirectives")

          MergeDirectives -->|"_inputParam"| IAstInputParam
          IAstInputParam("IAstInputParam")

          IAstInputParam -->|"="| MergeInputParams
          IAstSchemaOperation("IAstSchemaOperation")

          IAstSchemaOperation -->|"="| MergeOperations
          IAstSchemaOption("IAstSchemaOption")

          IAstSchemaOption -->|"="| MergeOptions
          MergeOptions("MergeOptions")

          MergeOptions -->|"_setting"| IAstSchemaSetting
          IAstSchemaSetting("IAstSchemaSetting")

          IAstSchemaSetting -->|"="| MergeOptionSettings
          MergeOptionSettings("MergeOptionSettings")

          MergeOptionSettings -->|"_value"| IAstConstant
          IAstConstant("IAstConstant")

          IAstConstant -->|"="| MergeConstants
        

IAstTypeParam

          flowchart TD
          IAstTypeParam("IAstTypeParam")

          IAstTypeParam -->|"="| MergeTypeParams
        

IAstUnion

          flowchart TD
          IAstUnion("IAstUnion")

          IAstUnion -->|"="| MergeUnions
          MergeUnions("MergeUnions")

          MergeUnions -->|"_mergeItems"| IAstUnionMember
          MergeUnions -->|"="| MergeUnions
          IAstUnionMember("IAstUnionMember")

          IAstUnionMember -->|"="| MergeUnionMembers
          MergeDomains_MergeDomains`2("MergeDomains(MergeDomains`2")

          MergeDomains_MergeDomains`2 -->|"_mergeItems"| IAstDomainLabel
          IAstDomainLabel("IAstDomainLabel")

          IAstDomainLabel -->|"="| MergeDomainLabels
          AstObjectsMerger_AstObjectsMerger`1("AstObjectsMerger(AstObjectsMerger`1")

          AstObjectsMerger_AstObjectsMerger`1 -->|"_alternates"| IAstAlternate
          AstObjectsMerger_AstObjectsMerger`1 -->|"_mergeItems"| IAstDualField
          AstObjectsMerger_AstObjectsMerger`1 -->|"_typeParams"| IAstTypeParam
          IAstAlternate("IAstAlternate")

          IAstAlternate -->|"="| MergeAlternates
          IAstDualField("IAstDualField")

          IAstDualField -->|"="| MergeDualFields
          IAstTypeParam("IAstTypeParam")

          IAstTypeParam -->|"="| MergeTypeParams