<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="8,1,196">
    <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="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="h" 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,8,195">
      <NameSlot slot="4" name="h" startPos="1,5,4" endPos="1,6,5"/>
      <DynamicFunctionNode startPos="0,0,0" endPos="0,0,0">
        <FunctionParameterNode materialize="false" 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">
          <PatternMatcherNode startPos="0,0,0" endPos="0,0,0">
            <VariableReferenceNode startPos="2,7,53" endPos="2,8,54"/>
            <EmptyArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <DynamicFunctionNode startPos="3,20,82" endPos="3,27,89">
                <VariableReferenceNode startPos="3,20,82" endPos="3,27,89"/>
              </DynamicFunctionNode>
            </EmptyArrayPatternNode>
            <DeconstructArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <DynamicFunctionNode startPos="5,13,127" endPos="6,38,187">
                <FunctionParameterNode materialize="true" typeRequiresMaterialize="false" startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="3" name="x" startPos="4,15,104" endPos="4,16,105"/>
                  <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,108" endPos="4,21,110"/>
                  <TypeNode startPos="0,0,0" endPos="0,0,0"/>
                </FunctionParameterNode>
                <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"/>
                      <VariableReferenceNode startPos="5,32,146" endPos="5,34,148"/>
                    </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="5,16,130" endPos="5,28,142">
                    <VariableReferenceNode startPos="5,16,130" endPos="5,17,131"/>
                    <StringNode startPos="5,21,135" endPos="5,28,142">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"/>
                      <VariableReferenceNode startPos="6,20,169" endPos="6,22,171"/>
                    </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="6,25,174" endPos="6,37,186">
                        <VariableReferenceNode startPos="6,33,182" endPos="6,35,184"/>
                        <VariableReferenceNode startPos="6,25,174" endPos="6,32,181"/>
                        <VariableReferenceNode startPos="6,36,185" endPos="6,37,186"/>
                      </FunctionCallNode>
                    </VarDirective>
                  </InlineTailRecFunctionCall>
                </IfNode>
              </DynamicFunctionNode>
            </DeconstructArrayPatternNode>
          </PatternMatcherNode>
        </TailRecFunctionBodyNode>
      </DynamicFunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <FunctionCallNode startPos="9,1,200" endPos="9,6,205">
    <VariableReferenceNode startPos="9,1,200" endPos="9,2,201"/>
    <LiteralArrayNode startPos="9,3,202" endPos="9,5,204"/>
  </FunctionCallNode>
</AST>