ArrayParser(ArrayParser`1

          flowchart TD
          ArrayParser_ArrayParser`1("ArrayParser(ArrayParser`1")

          ArrayParser_ArrayParser`1 -->|"_itemParser"| IAstDomainTrueFalse
          IAstDomainTrueFalse("IAstDomainTrueFalse")

          IAstDomainTrueFalse -->|"="| ParseDomainTrueFalse
          ParseDomainTrueFalse("ParseDomainTrueFalse")

          ParseDomainTrueFalse -->|"_items"| IAstDomainTrueFalse
          CategoryOutput("CategoryOutput")

          CategoryOutput -->|"="| ParseCategoryDefinition
          ParseCategoryDefinition("ParseCategoryDefinition")

          ParseCategoryDefinition -->|"_modifiers"| IAstModifier
          ParseCategoryDefinition -->|"_typeRef"| IAstTypeRef
          IAstTypeRef("IAstTypeRef")

          IAstTypeRef -->|"="| ParseTypeRef
        

DirectiveLocation

          flowchart TD
          DirectiveLocation("DirectiveLocation")

          DirectiveLocation -->|"="| ParseDirectiveDefinition
          ParseDirectiveDefinition("ParseDirectiveDefinition")

          ParseDirectiveDefinition -->|"_location"| IEnumParser_DirectiveLocation_
          IEnumParser_DirectiveLocation_("IEnumParser(DirectiveLocation)")

          IEnumParser_DirectiveLocation_ -->|"="| EnumParser_DirectiveLocation_
        

DomainDefinition

          flowchart TD
          DomainDefinition("DomainDefinition")

          DomainDefinition -->|"="| ParseDomainDefinition
          ParseDomainDefinition("ParseDomainDefinition")

          ParseDomainDefinition -->|"_kind"| IEnumParser_DomainKind_
          ParseDomainDefinition -->|"_typeRef"| IAstTypeRef
          IEnumParser_DomainKind_("IEnumParser(DomainKind)")

          IEnumParser_DomainKind_ -->|"="| EnumParser_DomainKind_
          IAstTypeRef("IAstTypeRef")

          IAstTypeRef -->|"="| ParseTypeRef
        

EnumDefinition

          flowchart TD
          EnumDefinition("EnumDefinition")

          EnumDefinition -->|"="| ParseEnumDefinition
          ParseEnumDefinition("ParseEnumDefinition")

          ParseEnumDefinition -->|"_enumLabel"| IAstEnumLabel
          ParseEnumDefinition -->|"_typeRef"| IAstTypeRef
          IAstEnumLabel("IAstEnumLabel")

          IAstEnumLabel -->|"="| ParseEnumLabel
          ParseEnumLabel("ParseEnumLabel")

          ParseEnumLabel -->|"_aliases"| String
          String("String")

          String -->|"="| ParseAliases
          IAstTypeRef("IAstTypeRef")

          IAstTypeRef -->|"="| ParseTypeRef
        

IAstAlternate

          flowchart TD
          IAstAlternate("IAstAlternate")

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

          ParseAlternates -->|"_collections"| IParserCollections
          ParseAlternates -->|"_parseBase"| IAstObjBase
          ParseAlternates -->|"_parseEnum"| IAstEnumValue
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
          ParseObjBase("ParseObjBase")

          ParseObjBase -->|"_parseArgs"| IAstTypeArg
          IAstTypeArg("IAstTypeArg")

          IAstTypeArg -->|"="| ParseTypeArgs
        

IAstDomain

          flowchart TD
          IAstDomain("IAstDomain")

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

          ParseDomain -->|"_aliases"| String
          ParseDomain -->|"_definition"| DomainDefinition
          ParseDomain -->|"_name"| ISimpleName
          ParseDomain -->|"_option"| IOptionParser_NullOption_
          ParseDomain -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          DomainDefinition("DomainDefinition")

          DomainDefinition -->|"="| ParseDomainDefinition
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IAstDomainLabel

          flowchart TD
          IAstDomainLabel("IAstDomainLabel")

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

          ParseDomainLabel -->|"_items"| IAstDomainLabel
          IAstDomainRange("IAstDomainRange")

          IAstDomainRange -->|"="| ParseDomainRange
          ParseDomainRange("ParseDomainRange")

          ParseDomainRange -->|"_items"| IAstDomainRange
          IAstDomainRegex("IAstDomainRegex")

          IAstDomainRegex -->|"="| ParseDomainRegex
          ParseDomainRegex("ParseDomainRegex")

          ParseDomainRegex -->|"_items"| IAstDomainRegex
        

IAstDualField

          flowchart TD
          IAstDualField("IAstDualField")

          IAstDualField -->|"="| ParseDualField
          ParseDualField("ParseDualField")

          ParseDualField -->|"_aliases"| String
          ParseDualField -->|"_modifiers"| IAstModifier
          ParseDualField -->|"_parseBase"| IAstObjBase
          String("String")

          String -->|"="| ParseAliases
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
        

IAstEnum

          flowchart TD
          IAstEnum("IAstEnum")

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

          ParseEnum -->|"_aliases"| String
          ParseEnum -->|"_definition"| EnumDefinition
          ParseEnum -->|"_name"| ISimpleName
          ParseEnum -->|"_option"| IOptionParser_NullOption_
          ParseEnum -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          EnumDefinition("EnumDefinition")

          EnumDefinition -->|"="| ParseEnumDefinition
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IAstInputField

          flowchart TD
          IAstInputField("IAstInputField")

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

          ParseInputField -->|"_aliases"| String
          ParseInputField -->|"_default"| IParserDefault
          ParseInputField -->|"_modifiers"| IAstModifier
          ParseInputField -->|"_parseBase"| IAstObjBase
          String("String")

          String -->|"="| ParseAliases
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
          IAstInputParam("IAstInputParam")

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

          ParseInputParams -->|"_default"| IParserDefault
          ParseInputParams -->|"_input"| IAstObjBase
          ParseInputParams -->|"_modifiers"| IAstModifier
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
        

IAstObject(IAstDualField)

          flowchart TD
          IAstObject_IAstDualField_("IAstObject(IAstDualField)")

          IAstObject_IAstDualField_ -->|"="| ObjectParser_IAstDualField_
          IAstObject_IAstInputField_("IAstObject(IAstInputField)")

          IAstObject_IAstInputField_ -->|"="| ObjectParser_IAstInputField_
          IAstObject_IAstOutputField_("IAstObject(IAstOutputField)")

          IAstObject_IAstOutputField_ -->|"="| ObjectParser_IAstOutputField_
        

IAstOutputField

          flowchart TD
          IAstOutputField("IAstOutputField")

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

          ParseOutputField -->|"_aliases"| String
          ParseOutputField -->|"_modifiers"| IAstModifier
          ParseOutputField -->|"_parameter"| IAstInputParam
          ParseOutputField -->|"_parseBase"| IAstObjBase
          String("String")

          String -->|"="| ParseAliases
          IAstInputParam("IAstInputParam")

          IAstInputParam -->|"="| ParseInputParams
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
          IAstSchema("IAstSchema")

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

          ParseSchema -->|"_parsers"| IParseDeclaration
        

IAstSchemaCategory

          flowchart TD
          IAstSchemaCategory("IAstSchemaCategory")

          IAstSchemaCategory -->|"="| ParseCategory
          ParseCategory("ParseCategory")

          ParseCategory -->|"_aliases"| String
          ParseCategory -->|"_definition"| CategoryOutput
          ParseCategory -->|"_name"| ICategoryName
          ParseCategory -->|"_option"| IOptionParser_CategoryOption_
          ParseCategory -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          CategoryOutput("CategoryOutput")

          CategoryOutput -->|"="| ParseCategoryDefinition
          ICategoryName("ICategoryName")

          ICategoryName -->|"="| CategoryName
          IOptionParser_CategoryOption_("IOptionParser(CategoryOption)")

          IOptionParser_CategoryOption_ -->|"="| OptionParser_CategoryOption_
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IAstSchemaDirective

          flowchart TD
          IAstSchemaDirective("IAstSchemaDirective")

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

          ParseDirective -->|"_aliases"| String
          ParseDirective -->|"_definition"| DirectiveLocation
          ParseDirective -->|"_name"| IDirectiveName
          ParseDirective -->|"_option"| IOptionParser_DirectiveOption_
          ParseDirective -->|"_param"| IAstInputParam
          String("String")

          String -->|"="| ParseAliases
          DirectiveLocation("DirectiveLocation")

          DirectiveLocation -->|"="| ParseDirectiveDefinition
          IDirectiveName("IDirectiveName")

          IDirectiveName -->|"="| DirectiveName
          IOptionParser_DirectiveOption_("IOptionParser(DirectiveOption)")

          IOptionParser_DirectiveOption_ -->|"="| OptionParser_DirectiveOption_
          IAstInputParam("IAstInputParam")

          IAstInputParam -->|"="| ParseInputParams
        

IAstSchemaOperation

          flowchart TD
          IAstSchemaOperation("IAstSchemaOperation")

          IAstSchemaOperation -->|"="| ParseOperationDecl
          ParseOperationDecl("ParseOperationDecl")

          ParseOperationDecl -->|"_aliases"| String
          ParseOperationDecl -->|"_definition"| OperationDefinition
          ParseOperationDecl -->|"_name"| ISimpleName
          ParseOperationDecl -->|"_option"| IOptionParser_NullOption_
          ParseOperationDecl -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          OperationDefinition("OperationDefinition")

          OperationDefinition -->|"="| ParseOperationDefinition
          ParseOperationDefinition("ParseOperationDefinition")

          ParseOperationDefinition -->|"_argument"| IParserArg
          ParseOperationDefinition -->|"_directives"| IAstDirective
          ParseOperationDefinition -->|"_fragments"| IParserStartFragments
          ParseOperationDefinition -->|"_modifiers"| IAstModifier
          ParseOperationDefinition -->|"_object"| IAstSelection
          ParseOperationDefinition -->|"_resultType"| IAstTypeRef
          ParseOperationDefinition -->|"_variables"| IAstVariable
          IAstTypeRef("IAstTypeRef")

          IAstTypeRef -->|"="| ParseTypeRef
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IAstSchemaOption

          flowchart TD
          IAstSchemaOption("IAstSchemaOption")

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

          ParseOption -->|"_aliases"| String
          ParseOption -->|"_definition"| OptionDefinition
          ParseOption -->|"_name"| ISimpleName
          ParseOption -->|"_option"| IOptionParser_NullOption_
          ParseOption -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          OptionDefinition("OptionDefinition")

          OptionDefinition -->|"="| ParseOptionDefinition
          ParseOptionDefinition("ParseOptionDefinition")

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

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

          ParseOptionSetting -->|"_default"| IParserDefault
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IAstTypeParam

          flowchart TD
          IAstTypeParam("IAstTypeParam")

          IAstTypeParam -->|"="| ParseTypeParams
        

IAstUnion

          flowchart TD
          IAstUnion("IAstUnion")

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

          ParseUnion -->|"_aliases"| String
          ParseUnion -->|"_definition"| UnionDefinition
          ParseUnion -->|"_name"| ISimpleName
          ParseUnion -->|"_option"| IOptionParser_NullOption_
          ParseUnion -->|"_param"| NullAst
          String("String")

          String -->|"="| ParseAliases
          UnionDefinition("UnionDefinition")

          UnionDefinition -->|"="| ParseUnionDefinition
          ParseUnionDefinition("ParseUnionDefinition")

          ParseUnionDefinition -->|"_typeRef"| IAstTypeRef
          ParseUnionDefinition -->|"_unionMember"| IAstUnionMember
          IAstTypeRef("IAstTypeRef")

          IAstTypeRef -->|"="| ParseTypeRef
          IAstUnionMember("IAstUnionMember")

          IAstUnionMember -->|"="| ParseUnionMember
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          NullAst("NullAst")

          NullAst -->|"="| ParseNulls
        

IEnumParser(CategoryOption)

          flowchart TD
          IEnumParser_CategoryOption_("IEnumParser(CategoryOption)")

          IEnumParser_CategoryOption_ -->|"="| EnumParser_CategoryOption_
          IEnumParser_DirectiveOption_("IEnumParser(DirectiveOption)")

          IEnumParser_DirectiveOption_ -->|"="| EnumParser_DirectiveOption_
          IEnumParser_NullOption_("IEnumParser(NullOption)")

          IEnumParser_NullOption_ -->|"="| ParseNullOption
          ObjectDefinition_IAstDualField_("ObjectDefinition(IAstDualField)")

          ObjectDefinition_IAstDualField_ -->|"="| ParseObjectDefinition_IAstDualField_
          ObjectDefinition_IAstInputField_("ObjectDefinition(IAstInputField)")

          ObjectDefinition_IAstInputField_ -->|"="| ParseObjectDefinition_IAstInputField_
          ObjectDefinition_IAstOutputField_("ObjectDefinition(IAstOutputField)")

          ObjectDefinition_IAstOutputField_ -->|"="| ParseObjectDefinition_IAstOutputField_
        

ObjectParser(ObjectParser`1

          flowchart TD
          ObjectParser_ObjectParser`1("ObjectParser(ObjectParser`1")

          ObjectParser_ObjectParser`1 -->|"_aliases"| String
          ObjectParser_ObjectParser`1 -->|"_definition"| ObjectDefinition_IAstDualField_
          ObjectParser_ObjectParser`1 -->|"_name"| ISimpleName
          ObjectParser_ObjectParser`1 -->|"_option"| IOptionParser_NullOption_
          ObjectParser_ObjectParser`1 -->|"_param"| IAstTypeParam
          String("String")

          String -->|"="| ParseAliases
          ObjectDefinition_IAstDualField_("ObjectDefinition(IAstDualField)")

          ObjectDefinition_IAstDualField_ -->|"="| ParseObjectDefinition_IAstDualField_
          ISimpleName("ISimpleName")

          ISimpleName -->|"="| SimpleName
          IOptionParser_NullOption_("IOptionParser(NullOption)")

          IOptionParser_NullOption_ -->|"="| ParseNullOption
          IAstTypeParam("IAstTypeParam")

          IAstTypeParam -->|"="| ParseTypeParams
        

OptionParser(OptionParser`1

          flowchart TD
          OptionParser_OptionParser`1("OptionParser(OptionParser`1")

          OptionParser_OptionParser`1 -->|"_parser"| IEnumParser_CategoryOption_
          IEnumParser_CategoryOption_("IEnumParser(CategoryOption)")

          IEnumParser_CategoryOption_ -->|"="| EnumParser_CategoryOption_
          ParseDeclaration_ParseDeclaration`1("ParseDeclaration(ParseDeclaration`1")

          ParseDeclaration_ParseDeclaration`1 -->|"_declaration"| IAstSchemaCategory
          IAstSchemaCategory("IAstSchemaCategory")

          IAstSchemaCategory -->|"="| ParseCategory
          ParseObjectDefinition_ParseObjectDefinition`1("ParseObjectDefinition(ParseObjectDefinition`1")

          ParseObjectDefinition_ParseObjectDefinition`1 -->|"_alternates"| IAstAlternate
          ParseObjectDefinition_ParseObjectDefinition`1 -->|"_parseBase"| IAstObjBase
          ParseObjectDefinition_ParseObjectDefinition`1 -->|"_parseField"| IAstDualField
          IAstAlternate("IAstAlternate")

          IAstAlternate -->|"="| ParseAlternates
          IAstObjBase("IAstObjBase")

          IAstObjBase -->|"="| ParseObjBase
          IAstDualField("IAstDualField")

          IAstDualField -->|"="| ParseDualField