<?xml version='1.0' encoding='UTF-8'?>
<AST>
  <HeaderNode startPos="1,1,0" endPos="16,1,494">
    <VariableTable startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="in1" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="1" name="in0" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="2" name="items" startPos="3,15,46" endPos="3,20,51"/>
      <NameSlot slot="3" name="callback" startPos="3,32,63" endPos="3,40,71"/>
      <NameSlot slot="4" name="doFilter" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="5" name="filter" startPos="3,5,36" endPos="3,11,42"/>
      <NameSlot slot="6" name="x" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="7" name="index" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="8" name="xs" startPos="0,0,0" endPos="0,0,0"/>
      <NameSlot slot="9" name="$" startPos="20,10,522" endPos="20,10,522"/>
      <NameSlot slot="10" name="$$" startPos="20,10,522" endPos="20,10,522"/>
    </VariableTable>
    <InputDirective startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="0" name="in1" startPos="0,0,0" endPos="0,0,0"/>
    </InputDirective>
    <InputDirective startPos="0,0,0" endPos="0,0,0">
      <NameSlot slot="1" name="in0" startPos="0,0,0" endPos="0,0,0"/>
    </InputDirective>
    <VersionDirective startPos="1,1,0" endPos="1,8,7">
      <VersionMajor startPos="1,5,4" endPos="1,6,5"/>
      <VersionMinor startPos="1,7,6" endPos="1,8,7"/>
    </VersionDirective>
    <OutputDirective startPos="2,1,8" endPos="2,24,31"/>
    <FunctionDirective startPos="3,1,32" endPos="4,33,155">
      <NameSlot slot="5" name="filter" startPos="3,5,36" endPos="3,11,42"/>
      <FunctionNode startPos="0,0,0" endPos="0,0,0">
        <FunctionParameterNode materialize="false" startPos="3,15,46" endPos="3,30,61">
          <NameSlot slot="2" name="items" startPos="3,15,46" endPos="3,20,51"/>
          <TypeNode startPos="3,22,53" endPos="3,30,61"/>
        </FunctionParameterNode>
        <FunctionParameterNode materialize="false" startPos="3,32,63" endPos="3,78,109">
          <NameSlot slot="3" name="callback" startPos="3,32,63" endPos="3,40,71"/>
          <TypeNode startPos="3,42,73" endPos="3,77,108"/>
        </FunctionParameterNode>
        <FunctionCallNode startPos="4,5,127" endPos="4,33,155"/>
      </FunctionNode>
    </FunctionDirective>
    <FunctionDirective startPos="6,1,157" endPos="14,6,492">
      <NameSlot slot="4" name="doFilter" startPos="6,5,161" endPos="6,13,169"/>
      <FunctionNode startPos="0,0,0" endPos="0,0,0">
        <FunctionParameterNode materialize="true" startPos="6,17,173" endPos="6,30,186">
          <NameSlot slot="7" name="index" startPos="6,17,173" endPos="6,22,178"/>
          <TypeNode startPos="6,24,180" endPos="6,30,186"/>
        </FunctionParameterNode>
        <FunctionParameterNode materialize="false" startPos="6,31,187" endPos="6,46,202">
          <NameSlot slot="2" name="items" startPos="6,31,187" endPos="6,36,192"/>
          <TypeNode startPos="6,38,194" endPos="6,46,202"/>
        </FunctionParameterNode>
        <FunctionParameterNode materialize="true" startPos="6,48,204" endPos="6,94,250">
          <NameSlot slot="3" name="callback" startPos="6,48,204" endPos="6,56,212"/>
          <TypeNode startPos="6,58,214" endPos="6,93,249"/>
        </FunctionParameterNode>
        <TailRecFunctionBodyNode startPos="0,0,0" endPos="0,0,0">
          <PatternMatcherNode startPos="0,0,0" endPos="0,0,0">
            <VariableReferenceNode startPos="7,5,268" endPos="7,10,273"/>
            <DeconstructArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <FunctionNode startPos="9,13,319" endPos="12,50,464">
                <FunctionParameterNode materialize="true" startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="6" name="x" startPos="8,15,296" endPos="8,16,297"/>
                  <TypeNode startPos="0,0,0" endPos="0,0,0"/>
                </FunctionParameterNode>
                <FunctionParameterNode materialize="true" startPos="0,0,0" endPos="0,0,0">
                  <NameSlot slot="8" name="xs" startPos="8,19,300" endPos="8,21,302"/>
                  <TypeNode startPos="0,0,0" endPos="0,0,0"/>
                </FunctionParameterNode>
                <IfNode startPos="0,0,0" endPos="0,0,0">
                  <HeadTailArrayNode startPos="10,17,358" endPos="10,56,397">
                    <VariableReferenceNode startPos="10,18,359" endPos="10,19,360"/>
                    <FunctionCallNode startPos="10,22,363" endPos="10,55,396"/>
                  </HeadTailArrayNode>
                  <FunctionCallNode startPos="9,16,322" endPos="9,34,340"/>
                  <InlineTailRecFunctionCall startPos="0,0,0" endPos="0,0,0">
                    <VarDirective startPos="0,0,0" endPos="0,0,0">
                      <NameSlot slot="7" name="index" startPos="6,17,173" endPos="6,22,178"/>
                      <BinaryOpNode startPos="12,26,440" endPos="12,35,449"/>
                    </VarDirective>
                    <VarDirective startPos="0,0,0" endPos="0,0,0">
                      <NameSlot slot="2" name="items" startPos="6,31,187" endPos="6,36,192"/>
                      <VariableReferenceNode startPos="12,37,451" endPos="12,39,453"/>
                    </VarDirective>
                    <VarDirective startPos="0,0,0" endPos="0,0,0">
                      <NameSlot slot="3" name="callback" startPos="6,48,204" endPos="6,56,212"/>
                      <VariableReferenceNode startPos="12,41,455" endPos="12,49,463"/>
                    </VarDirective>
                  </InlineTailRecFunctionCall>
                </IfNode>
              </FunctionNode>
            </DeconstructArrayPatternNode>
            <EmptyArrayPatternNode startPos="0,0,0" endPos="0,0,0">
              <FunctionNode startPos="13,20,484" endPos="13,22,486">
                <ArrayNode startPos="13,20,484" endPos="13,22,486"/>
              </FunctionNode>
            </EmptyArrayPatternNode>
          </PatternMatcherNode>
        </TailRecFunctionBodyNode>
      </FunctionNode>
    </FunctionDirective>
  </HeaderNode>
  <ObjectNode startPos="17,1,498" endPos="22,2,565">
    <KeyValuePairNode startPos="18,2,501" endPos="21,6,563">
      <LiteralKeyNode startPos="18,2,501" endPos="18,6,505">
        <StringNode startPos="18,2,501" endPos="18,6,505">root</StringNode>
      </LiteralKeyNode>
      <ObjectNode startPos="19,5,511" endPos="21,6,563">
        <KeyValuePairNode startPos="20,7,519" endPos="20,45,557">
          <LiteralKeyNode startPos="20,7,519" endPos="20,8,520">
            <StringNode startPos="20,7,519" endPos="20,8,520">a</StringNode>
          </LiteralKeyNode>
          <FunctionCallNode startPos="20,10,522" endPos="20,45,557"/>
        </KeyValuePairNode>
      </ObjectNode>
    </KeyValuePairNode>
  </ObjectNode>
</AST>