<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="9,1,220">
    <VariableTable startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="empty" startPos="2,11,57" endPos="2,16,62"/>
      <NameSlot slot="1" name="a" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="2" name="head" startPos="2,31,77" endPos="2,35,81"/>
      <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="8,40,219">
      <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">
          <UsingNode startPos="0,0,0" endPos="0,0,0">
            <VarDirective startPos="0,0,0" endPos="0,0,0">
              <NameSlot slot="0" name="empty" startPos="2,11,57" endPos="2,16,62"/>
              <FunctionCallNode startPos="2,19,65" endPos="2,29,75">
                <VariableReferenceNode startPos="2,19,65" endPos="2,26,72"/>
                <VariableReferenceNode startPos="2,27,73" endPos="2,28,74"/>
              </FunctionCallNode>
            </VarDirective>
            <VarDirective startPos="0,0,0" endPos="0,0,0">
              <NameSlot slot="2" name="head" startPos="2,31,77" endPos="2,35,81"/>
              <NullSafeNode startPos="2,38,84" endPos="2,42,88">
                <BinaryOpNode name="Dynamic Selector" startPos="2,38,84" endPos="2,42,88">
                  <VariableReferenceNode startPos="2,38,84" endPos="2,39,85"/>
                  <NumberNode startPos="2,40,86" endPos="2,41,87">0</NumberNode>
                </BinaryOpNode>
              </NullSafeNode>
            </VarDirective>
            <IfNode startPos="0,0,0" endPos="0,0,0">
              <VariableReferenceNode startPos="4,9,112" endPos="4,16,119"/>
              <VariableReferenceNode startPos="3,8,97" endPos="3,13,102"/>
              <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="6,11,159" endPos="6,21,169">
                      <BinaryOpNode name="Dynamic Selector" startPos="6,11,159" endPos="6,21,169">
                        <VariableReferenceNode startPos="6,11,159" endPos="6,12,160"/>
                        <FunctionCallNode startPos="6,13,161" endPos="6,20,168">
                          <VariableReferenceNode startPos="6,15,163" endPos="6,17,165"/>
                          <NumberNode startPos="6,13,161" endPos="6,14,162">1</NumberNode>
                          <NumberNode startPos="6,18,166" endPos="6,20,168">-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="5,13,132" endPos="5,28,147">
                  <VariableReferenceNode startPos="5,13,132" endPos="5,17,136"/>
                  <StringNode startPos="5,21,140" endPos="5,28,147">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="8,11,190" endPos="8,21,200">
                      <BinaryOpNode name="Dynamic Selector" startPos="8,11,190" endPos="8,21,200">
                        <VariableReferenceNode startPos="8,11,190" endPos="8,12,191"/>
                        <FunctionCallNode startPos="8,13,192" endPos="8,20,199">
                          <VariableReferenceNode startPos="8,15,194" endPos="8,17,196"/>
                          <NumberNode startPos="8,13,192" endPos="8,14,193">1</NumberNode>
                          <NumberNode startPos="8,18,197" endPos="8,20,199">-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="8,24,203" endPos="8,39,218">
                      <VariableReferenceNode startPos="8,32,211" endPos="8,34,213"/>
                      <VariableReferenceNode startPos="8,24,203" endPos="8,31,210"/>
                      <VariableReferenceNode startPos="8,35,214" endPos="8,39,218"/>
                    </FunctionCallNode>
                  </VarDirective>
                </InlineTailRecFunctionCall>
              </IfNode>
            </IfNode>
          </UsingNode>
        </TailRecFunctionBodyNode>
      </DynamicFunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <FunctionCallNode startPos="10,1,224" endPos="10,37,260">
    <VariableReferenceNode startPos="10,1,224" endPos="10,2,225"/>
    <LiteralArrayNode startPos="10,3,226" endPos="10,36,259">
      <StringNode startPos="10,4,227" endPos="10,10,233">Read</StringNode>
      <StringNode startPos="10,12,235" endPos="10,19,242">Clear</StringNode>
      <StringNode startPos="10,21,244" endPos="10,27,250">Read</StringNode>
      <StringNode startPos="10,30,253" endPos="10,35,258">Foo</StringNode>
    </LiteralArrayNode>
  </FunctionCallNode>
</AST>