<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="12,1,278">
    <VariableTable startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="empty" startPos="2,13,64" endPos="2,18,69"/>
      <NameSlot slot="1" name="a" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="2" name="head" startPos="3,13,95" endPos="3,17,99"/>
      <NameSlot slot="3" name="collect" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="4" name="f" startPos="1,5,4" endPos="1,6,5"/>
    </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="11,5,277">
      <NameSlot slot="4" name="f" startPos="1,5,4" endPos="1,6,5"/>
      <DynamicFunctionNode startPos="0,0,0" endPos="0,0,0">
        <FunctionParameterNode materialize="true" typeRequiresMaterialize="false" startPos="1,7,6" endPos="1,23,22">
          <NameSlot slot="1" name="a" startPos="1,7,6" endPos="1,8,7"/>
          <LiteralTypeNode startPos="0,0,0" endPos="0,0,0">
            <TypeNode startPos="1,10,9" endPos="1,23,22"/>
          </LiteralTypeNode>
        </FunctionParameterNode>
        <FunctionParameterNode materialize="false" typeRequiresMaterialize="false" startPos="1,25,24" endPos="1,44,43">
          <NameSlot slot="3" name="collect" startPos="1,25,24" endPos="1,32,31"/>
          <LiteralTypeNode startPos="0,0,0" endPos="0,0,0">
            <TypeNode startPos="1,33,32" endPos="1,39,38"/>
          </LiteralTypeNode>
        </FunctionParameterNode>
        <TailRecFunctionBodyNode startPos="0,0,0" endPos="0,0,0">
          <DoBlockNode startPos="0,0,0" endPos="0,0,0">
            <HeaderNode startPos="2,9,60" endPos="4,9,115">
              <VariableTable startPos="0,0,0" endPos="0,0,0">
                <NameSlot slot="0" name="empty" startPos="2,13,64" endPos="2,18,69"/>
                <NameSlot slot="1" name="a" startPos="0,0,0" endPos="0,0,0"/>
                <NameSlot slot="2" name="head" startPos="3,13,95" endPos="3,17,99"/>
                <NameSlot slot="3" name="collect" startPos="0,0,0" endPos="0,0,0"/>
                <NameSlot slot="4" name="f" startPos="1,5,4" endPos="1,6,5"/>
              </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"/>
              <VarDirective startPos="2,9,60" endPos="2,31,82">
                <NameSlot slot="0" name="empty" startPos="2,13,64" endPos="2,18,69"/>
                <FunctionCallNode startPos="2,21,72" endPos="2,31,82">
                  <VariableReferenceNode startPos="2,21,72" endPos="2,28,79"/>
                  <VariableReferenceNode startPos="2,29,80" endPos="2,30,81"/>
                </FunctionCallNode>
              </VarDirective>
              <VarDirective startPos="3,9,91" endPos="3,24,106">
                <NameSlot slot="2" name="head" startPos="3,13,95" endPos="3,17,99"/>
                <NullSafeNode startPos="3,20,102" endPos="3,24,106">
                  <BinaryOpNode name="Dynamic Selector" startPos="3,20,102" endPos="3,24,106">
                    <VariableReferenceNode startPos="3,20,102" endPos="3,21,103"/>
                    <NumberNode startPos="3,22,104" endPos="3,23,105">0</NumberNode>
                  </BinaryOpNode>
                </NullSafeNode>
              </VarDirective>
            </HeaderNode>
            <IfNode startPos="0,0,0" endPos="0,0,0">
              <VariableReferenceNode startPos="6,13,149" endPos="6,20,156"/>
              <VariableReferenceNode startPos="5,12,130" endPos="5,17,135"/>
              <IfNode startPos="0,0,0" endPos="0,0,0">
                <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,7,6" endPos="1,8,7"/>
                    <NullSafeNode startPos="8,15,204" endPos="8,25,214">
                      <BinaryOpNode name="Dynamic Selector" startPos="8,15,204" endPos="8,25,214">
                        <VariableReferenceNode startPos="8,15,204" endPos="8,16,205"/>
                        <FunctionCallNode startPos="8,17,206" endPos="8,24,213">
                          <VariableReferenceNode startPos="8,19,208" endPos="8,21,210"/>
                          <NumberNode startPos="8,17,206" endPos="8,18,207">1</NumberNode>
                          <NumberNode startPos="8,22,211" endPos="8,24,213">-1</NumberNode>
                        </FunctionCallNode>
                      </BinaryOpNode>
                    </NullSafeNode>
                  </VarDirective>
                  <VarDirective startPos="0,0,0" endPos="0,0,0">
                    <NameSlot slot="3" name="collect" startPos="1,25,24" endPos="1,32,31"/>
                    <StringNode startPos="1,42,41" endPos="1,44,43"/>
                  </VarDirective>
                </InlineTailRecFunctionCall>
                <BinaryOpNode name="==" startPos="7,17,173" endPos="7,32,188">
                  <VariableReferenceNode startPos="7,17,173" endPos="7,21,177"/>
                  <StringNode startPos="7,25,181" endPos="7,32,188">Clear</StringNode>
                </BinaryOpNode>
                <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,7,6" endPos="1,8,7"/>
                    <NullSafeNode startPos="10,15,243" endPos="10,25,253">
                      <BinaryOpNode name="Dynamic Selector" startPos="10,15,243" endPos="10,25,253">
                        <VariableReferenceNode startPos="10,15,243" endPos="10,16,244"/>
                        <FunctionCallNode startPos="10,17,245" endPos="10,24,252">
                          <VariableReferenceNode startPos="10,19,247" endPos="10,21,249"/>
                          <NumberNode startPos="10,17,245" endPos="10,18,246">1</NumberNode>
                          <NumberNode startPos="10,22,250" endPos="10,24,252">-1</NumberNode>
                        </FunctionCallNode>
                      </BinaryOpNode>
                    </NullSafeNode>
                  </VarDirective>
                  <VarDirective startPos="0,0,0" endPos="0,0,0">
                    <NameSlot slot="3" name="collect" startPos="1,25,24" endPos="1,32,31"/>
                    <FunctionCallNode startPos="10,28,256" endPos="10,43,271">
                      <VariableReferenceNode startPos="10,36,264" endPos="10,38,266"/>
                      <VariableReferenceNode startPos="10,28,256" endPos="10,35,263"/>
                      <VariableReferenceNode startPos="10,39,267" endPos="10,43,271"/>
                    </FunctionCallNode>
                  </VarDirective>
                </InlineTailRecFunctionCall>
              </IfNode>
            </IfNode>
          </DoBlockNode>
        </TailRecFunctionBodyNode>
      </DynamicFunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <FunctionCallNode startPos="13,1,282" endPos="13,37,318">
    <VariableReferenceNode startPos="13,1,282" endPos="13,2,283"/>
    <LiteralArrayNode startPos="13,3,284" endPos="13,36,317">
      <StringNode startPos="13,4,285" endPos="13,10,291">Read</StringNode>
      <StringNode startPos="13,12,293" endPos="13,19,300">Clear</StringNode>
      <StringNode startPos="13,21,302" endPos="13,27,308">Read</StringNode>
      <StringNode startPos="13,30,311" endPos="13,35,316">Foo</StringNode>
    </LiteralArrayNode>
  </FunctionCallNode>
</AST>