<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="8,1,182">
    <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,7,6" endPos="1,8,7"/>
      <NameSlot slot="2" 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="7,40,181">
      <NameSlot slot="2" 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="0" 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">
          <IfNode startPos="0,0,0" endPos="0,0,0">
            <VariableReferenceNode startPos="3,9,74" endPos="3,16,81"/>
            <FunctionCallNode startPos="2,8,54" endPos="2,18,64">
              <VariableReferenceNode startPos="2,8,54" endPos="2,15,61"/>
              <VariableReferenceNode startPos="2,16,62" endPos="2,17,63"/>
            </FunctionCallNode>
            <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="5,11,121" endPos="5,21,131">
                    <BinaryOpNode name="Dynamic Selector" startPos="5,11,121" endPos="5,21,131">
                      <VariableReferenceNode startPos="5,11,121" endPos="5,12,122"/>
                      <FunctionCallNode startPos="5,13,123" endPos="5,20,130">
                        <VariableReferenceNode startPos="5,15,125" endPos="5,17,127"/>
                        <NumberNode startPos="5,13,123" endPos="5,14,124">1</NumberNode>
                        <NumberNode startPos="5,18,128" endPos="5,20,130">-1</NumberNode>
                      </FunctionCallNode>
                    </BinaryOpNode>
                  </NullSafeNode>
                </VarDirective>
                <VarDirective startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="0" name="collect" startPos="1,25,24" endPos="1,32,31"/>
                  <StringNode startPos="1,42,41" endPos="1,44,43"/>
                </VarDirective>
              </InlineTailRecFunctionCall>
              <BinaryOpNode name="==" startPos="4,13,94" endPos="4,28,109">
                <NullSafeNode startPos="4,13,94" endPos="4,17,98">
                  <BinaryOpNode name="Dynamic Selector" startPos="4,13,94" endPos="4,17,98">
                    <VariableReferenceNode startPos="4,13,94" endPos="4,14,95"/>
                    <NumberNode startPos="4,15,96" endPos="4,16,97">0</NumberNode>
                  </BinaryOpNode>
                </NullSafeNode>
                <StringNode startPos="4,21,102" endPos="4,28,109">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="7,11,152" endPos="7,21,162">
                    <BinaryOpNode name="Dynamic Selector" startPos="7,11,152" endPos="7,21,162">
                      <VariableReferenceNode startPos="7,11,152" endPos="7,12,153"/>
                      <FunctionCallNode startPos="7,13,154" endPos="7,20,161">
                        <VariableReferenceNode startPos="7,15,156" endPos="7,17,158"/>
                        <NumberNode startPos="7,13,154" endPos="7,14,155">1</NumberNode>
                        <NumberNode startPos="7,18,159" endPos="7,20,161">-1</NumberNode>
                      </FunctionCallNode>
                    </BinaryOpNode>
                  </NullSafeNode>
                </VarDirective>
                <VarDirective startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="0" name="collect" startPos="1,25,24" endPos="1,32,31"/>
                  <FunctionCallNode startPos="7,24,165" endPos="7,39,180">
                    <VariableReferenceNode startPos="7,32,173" endPos="7,34,175"/>
                    <VariableReferenceNode startPos="7,24,165" endPos="7,31,172"/>
                    <NullSafeNode startPos="7,35,176" endPos="7,39,180">
                      <BinaryOpNode name="Dynamic Selector" startPos="7,35,176" endPos="7,39,180">
                        <VariableReferenceNode startPos="7,35,176" endPos="7,36,177"/>
                        <NumberNode startPos="7,37,178" endPos="7,38,179">0</NumberNode>
                      </BinaryOpNode>
                    </NullSafeNode>
                  </FunctionCallNode>
                </VarDirective>
              </InlineTailRecFunctionCall>
            </IfNode>
          </IfNode>
        </TailRecFunctionBodyNode>
      </DynamicFunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <FunctionCallNode startPos="9,1,186" endPos="9,37,222">
    <VariableReferenceNode startPos="9,1,186" endPos="9,2,187"/>
    <LiteralArrayNode startPos="9,3,188" endPos="9,36,221">
      <StringNode startPos="9,4,189" endPos="9,10,195">Read</StringNode>
      <StringNode startPos="9,12,197" endPos="9,19,204">Clear</StringNode>
      <StringNode startPos="9,21,206" endPos="9,27,212">Read</StringNode>
      <StringNode startPos="9,30,215" endPos="9,35,220">Foo</StringNode>
    </LiteralArrayNode>
  </FunctionCallNode>
</AST>