IAstArg

          flowchart TD
          IAstArg("IAstArg")

          IAstArg -->|"="| ParseArgValue
          ParseArgValue("ParseArgValue")

          ParseArgValue -->|"_constant"| IAstConstant
          ParseArgValue -->|"_field"| KeyValue_IAstArg_
          ParseArgValue -->|"_key"| IAstFieldKey
          ParseArgValue -->|"_value"| IAstArg
          ParseArgValue -->|"FieldKey"| IAstFieldKey
          ParseArgValue -->|"KeyValueParser"| KeyValue_IAstArg_
          ParseArgValue -->|"ListParser"| IAstArg
          ParseArgValue -->|"ObjectParser"| IAstFields_IAstArg_
          KeyValue_IAstArg_("KeyValue(IAstArg)")

          KeyValue_IAstArg_ -->|"="| ValueKeyValueParser_IAstArg_
          IAstFields_IAstArg_("IAstFields(IAstArg)")

          IAstFields_IAstArg_ -->|"="| ValueObjectParser_IAstArg_
        

IAstDirective

          flowchart TD
          IAstDirective("IAstDirective")

          IAstDirective -->|"="| ParseDirectives
          ParseDirectives("ParseDirectives")

          ParseDirectives -->|"_argument"| IParserArg
          IParserArg("IParserArg")

          IParserArg -->|"="| ParseArg
          ParseArg("ParseArg")

          ParseArg -->|"_argument"| IValueParser_IAstArg_
          ParseArg -->|"_fieldKey"| IAstFieldKey
          IValueParser_IAstArg_("IValueParser(IAstArg)")

          IValueParser_IAstArg_ -->|"="| ParseArgValue
          ParseArgValue("ParseArgValue")

          ParseArgValue -->|"_constant"| IAstConstant
          ParseArgValue -->|"_field"| KeyValue_IAstArg_
          ParseArgValue -->|"_key"| IAstFieldKey
          ParseArgValue -->|"_value"| IAstArg
          ParseArgValue -->|"FieldKey"| IAstFieldKey
          ParseArgValue -->|"KeyValueParser"| KeyValue_IAstArg_
          ParseArgValue -->|"ListParser"| IAstArg
          ParseArgValue -->|"ObjectParser"| IAstFields_IAstArg_
        

IAstField

          flowchart TD
          IAstField("IAstField")

          IAstField -->|"="| ParseField
          ParseField("ParseField")

          ParseField -->|"_argument"| IParserArg
          ParseField -->|"_directives"| IAstDirective
          ParseField -->|"_modifiers"| IAstModifier
          ParseField -->|"_object"| IAstSelection
          IParserArg("IParserArg")

          IParserArg -->|"="| ParseArg
          IAstDirective("IAstDirective")

          IAstDirective -->|"="| ParseDirectives
          IAstSelection("IAstSelection")

          IAstSelection -->|"="| ParseSelection
          ParseSelection("ParseSelection")

          ParseSelection -->|"_directives"| IAstDirective
          ParseSelection -->|"_modifiers"| IAstModifier
          ParseSelection -->|"_object"| IAstSelection
        

IAstOperation

          flowchart TD
          IAstOperation("IAstOperation")

          IAstOperation -->|"="| ParseOperation
          ParseOperation("ParseOperation")

          ParseOperation -->|"_argument"| IParserArg
          ParseOperation -->|"_directives"| IAstDirective
          ParseOperation -->|"_endFragments"| IParserEndFragments
          ParseOperation -->|"_modifiers"| IAstModifier
          ParseOperation -->|"_object"| IAstSelection
          ParseOperation -->|"_startFragments"| IParserStartFragments
          ParseOperation -->|"_variables"| IAstVariable
          IParserArg("IParserArg")

          IParserArg -->|"="| ParseArg
          IAstDirective("IAstDirective")

          IAstDirective -->|"="| ParseDirectives
          IParserEndFragments("IParserEndFragments")

          IParserEndFragments -->|"="| ParseEndFragments
          IAstSelection("IAstSelection")

          IAstSelection -->|"="| ParseSelection
          IParserStartFragments("IParserStartFragments")

          IParserStartFragments -->|"="| ParseStartFragments
          IAstVariable("IAstVariable")

          IAstVariable -->|"="| ParseVariable
          ParseVariable("ParseVariable")

          ParseVariable -->|"_default"| IParserDefault
          ParseVariable -->|"_directives"| IAstDirective
          ParseVariable -->|"_modifiers"| IAstModifier
          ParseVariable -->|"_varTypeParser"| IParserVarType
          IParserVarType("IParserVarType")

          IParserVarType -->|"="| ParseVarType
        

ParseFragments

          flowchart TD
          ParseFragments("ParseFragments")

          ParseFragments -->|"_directives"| IAstDirective
          ParseFragments -->|"_object"| IAstSelection
          IAstDirective("IAstDirective")

          IAstDirective -->|"="| ParseDirectives
          IAstSelection("IAstSelection")

          IAstSelection -->|"="| ParseSelection
          ParseObject("ParseObject")

          ParseObject -->|"_field"| IAstField
          ParseObject -->|"_selection"| IAstSelection
          IAstField("IAstField")

          IAstField -->|"="| ParseField
          IAstSelection("IAstSelection")

          IAstSelection -->|"="| ParseSelection
        

ParseVariables

          flowchart TD
          ParseVariables("ParseVariables")

          ParseVariables -->|"_variable"| IAstVariable
          IAstVariable("IAstVariable")

          IAstVariable -->|"="| ParseVariable