<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="6,1,160">
    <VariableTable startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="collect" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="1" name="a" startPos="1,14,13" endPos="1,15,14"/>
      <NameSlot slot="2" name="xs" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="3" name="x" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="4" name="mkstring" startPos="1,5,4" endPos="1,13,12"/>
    </VariableTable>
    <VariableTable startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="dw::Core" startPos="0,0,0" endPos="0,0,0"/>
    </VariableTable>
    <ExternalBindings startPos="0,0,0" endPos="0,0,0"/>
    <FunctionDirective startPos="1,1,0" endPos="5,6,159">
      <NameSlot slot="4" name="mkstring" startPos="1,5,4" endPos="1,13,12"/>
      <DynamicFunctionNode startPos="0,0,0" endPos="0,0,0">
        <FunctionParameterNode materialize="false" typeRequiresMaterialize="false" startPos="1,14,13" endPos="1,30,29">
          <NameSlot slot="1" name="a" startPos="1,14,13" endPos="1,15,14"/>
          <LiteralTypeNode startPos="0,0,0" endPos="0,0,0">
            <TypeNode startPos="1,17,16" endPos="1,30,29"/>
          </LiteralTypeNode>
        </FunctionParameterNode>
        <FunctionParameterNode materialize="false" typeRequiresMaterialize="false" startPos="1,32,31" endPos="1,51,50">
          <NameSlot slot="0" name="collect" startPos="1,32,31" endPos="1,39,38"/>
          <LiteralTypeNode startPos="0,0,0" endPos="0,0,0">
            <TypeNode startPos="1,40,39" endPos="1,46,45"/>
          </LiteralTypeNode>
        </FunctionParameterNode>
        <TailRecFunctionBodyNode startPos="0,0,0" endPos="0,0,0">
          <PatternMatcherNode startPos="0,0,0" endPos="0,0,0">
            <VariableReferenceNode startPos="2,5,58" endPos="2,6,59"/>
            <EmptyArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <DynamicFunctionNode startPos="3,20,87" endPos="3,27,94">
                <VariableReferenceNode startPos="3,20,87" endPos="3,27,94"/>
              </DynamicFunctionNode>
            </EmptyArrayPatternNode>
            <DeconstructArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <DynamicFunctionNode startPos="4,26,120" endPos="4,59,153">
                <FunctionParameterNode materialize="false" typeRequiresMaterialize="false" startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="3" name="x" startPos="4,15,109" endPos="4,16,110"/>
                  <TypeNode startPos="0,0,0" endPos="0,0,0"/>
                </FunctionParameterNode>
                <FunctionParameterNode materialize="false" typeRequiresMaterialize="false" startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="2" name="xs" startPos="4,19,113" endPos="4,21,115"/>
                  <TypeNode startPos="0,0,0" endPos="0,0,0"/>
                </FunctionParameterNode>
                <InlineTailRecFunctionCall startPos="0,0,0" endPos="0,0,0">
                  <VarDirective startPos="0,0,0" endPos="0,0,0">
                    <NameSlot slot="1" name="a" startPos="1,14,13" endPos="1,15,14"/>
                    <VariableReferenceNode startPos="4,35,129" endPos="4,37,131"/>
                  </VarDirective>
                  <VarDirective startPos="0,0,0" endPos="0,0,0">
                    <NameSlot slot="0" name="collect" startPos="1,32,31" endPos="1,39,38"/>
                    <FunctionCallNode startPos="4,39,133" endPos="4,58,152">
                      <VariableReferenceNode startPos="4,54,148" endPos="4,56,150"/>
                      <FunctionCallNode startPos="4,39,133" endPos="4,53,147">
                        <VariableReferenceNode startPos="4,47,141" endPos="4,49,143"/>
                        <VariableReferenceNode startPos="4,39,133" endPos="4,46,140"/>
                        <StringNode startPos="4,50,144" endPos="4,53,147">,</StringNode>
                      </FunctionCallNode>
                      <VariableReferenceNode startPos="4,57,151" endPos="4,58,152"/>
                    </FunctionCallNode>
                  </VarDirective>
                </InlineTailRecFunctionCall>
              </DynamicFunctionNode>
            </DeconstructArrayPatternNode>
          </PatternMatcherNode>
        </TailRecFunctionBodyNode>
      </DynamicFunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <FunctionCallNode startPos="7,1,164" endPos="7,44,207">
    <VariableReferenceNode startPos="7,1,164" endPos="7,9,172"/>
    <LiteralArrayNode startPos="7,10,173" endPos="7,43,206">
      <StringNode startPos="7,11,174" endPos="7,17,180">Read</StringNode>
      <StringNode startPos="7,19,182" endPos="7,26,189">Clear</StringNode>
      <StringNode startPos="7,28,191" endPos="7,34,197">Read</StringNode>
      <StringNode startPos="7,37,200" endPos="7,42,205">Foo</StringNode>
    </LiteralArrayNode>
  </FunctionCallNode>
</AST>