(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"wildmatch tests">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (FuncDef
      name: match
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {($ VSub_Number "$1")} {(Lit_Other "=")} {(1)} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ("wildmatch:     match '") ($ VSub_Number "$3") ("' '") ($ VSub_Number "$4") 
                          ("'")
                        )
                      } 
                      {
                        (DQ ("\n") ("\t    test-wildmatch wildmatch '") ($ VSub_Number "$3") ("' '") 
                          ($ VSub_Number "$4") ("'\n") ("\t")
                        )
                      }
                    )
                  ]
                  spids: [-1 35]
                )
              ]
              else_action: [
                (C {(test_expect_success)} 
                  {
                    (DQ ("wildmatch:  no match '") ($ VSub_Number "$3") ("' '") ($ VSub_Number "$4") 
                      ("'")
                    )
                  } 
                  {
                    (DQ ("\n") ("\t    ! test-wildmatch wildmatch '") ($ VSub_Number "$3") ("' '") 
                      ($ VSub_Number "$4") ("'\n") ("\t")
                    )
                  }
                )
              ]
              spids: [59 83]
            )
          ]
          spids: [19]
        )
      spids: [15 18]
    )
    (FuncDef
      name: imatch
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {($ VSub_Number "$1")} {(Lit_Other "=")} {(1)} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ("iwildmatch:    match '") ($ VSub_Number "$2") ("' '") ($ VSub_Number "$3") 
                          ("'")
                        )
                      } 
                      {
                        (DQ ("\n") ("\t    test-wildmatch iwildmatch '") ($ VSub_Number "$2") ("' '") 
                          ($ VSub_Number "$3") ("'\n") ("\t")
                        )
                      }
                    )
                  ]
                  spids: [-1 108]
                )
              ]
              else_action: [
                (C {(test_expect_success)} 
                  {
                    (DQ ("iwildmatch: no match '") ($ VSub_Number "$2") ("' '") ($ VSub_Number "$3") 
                      ("'")
                    )
                  } 
                  {
                    (DQ ("\n") ("\t    ! test-wildmatch iwildmatch '") ($ VSub_Number "$2") ("' '") 
                      ($ VSub_Number "$3") ("'\n") ("\t")
                    )
                  }
                )
              ]
              spids: [132 156]
            )
          ]
          spids: [92]
        )
      spids: [88 91]
    )
    (FuncDef
      name: pathmatch
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {($ VSub_Number "$1")} {(Lit_Other "=")} {(1)} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ("pathmatch:     match '") ($ VSub_Number "$2") ("' '") ($ VSub_Number "$3") 
                          ("'")
                        )
                      } 
                      {
                        (DQ ("\n") ("\t    test-wildmatch pathmatch '") ($ VSub_Number "$2") ("' '") 
                          ($ VSub_Number "$3") ("'\n") ("\t")
                        )
                      }
                    )
                  ]
                  spids: [-1 181]
                )
              ]
              else_action: [
                (C {(test_expect_success)} 
                  {
                    (DQ ("pathmatch:  no match '") ($ VSub_Number "$2") ("' '") ($ VSub_Number "$3") 
                      ("'")
                    )
                  } 
                  {
                    (DQ ("\n") ("\t    ! test-wildmatch pathmatch '") ($ VSub_Number "$2") ("' '") 
                      ($ VSub_Number "$3") ("'\n") ("\t")
                    )
                  }
                )
              ]
              spids: [205 229]
            )
          ]
          spids: [165]
        )
      spids: [161 164]
    )
    (C {(match)} {(1)} {(1)} {(foo)} {(foo)})
    (C {(match)} {(0)} {(0)} {(foo)} {(bar)})
    (C {(match)} {(1)} {(1)} {(SQ )} {(DQ )})
    (C {(match)} {(1)} {(1)} {(foo)} {(SQ <"???">)})
    (C {(match)} {(0)} {(0)} {(foo)} {(SQ <"??">)})
    (C {(match)} {(1)} {(1)} {(foo)} {(SQ <"*">)})
    (C {(match)} {(1)} {(1)} {(foo)} {(SQ <"f*">)})
    (C {(match)} {(0)} {(0)} {(foo)} {(SQ <"*f">)})
    (C {(match)} {(1)} {(1)} {(foo)} {(SQ <"*foo*">)})
    (C {(match)} {(1)} {(1)} {(foobar)} {(SQ <"*ob*a*r*">)})
    (C {(match)} {(1)} {(1)} {(aaaaaaabababab)} {(SQ <"*ab">)})
    (C {(match)} {(1)} {(1)} {(SQ <"foo*">)} {(SQ <"foo\\*">)})
    (C {(match)} {(0)} {(0)} {(foobar)} {(SQ <"foo\\*bar">)})
    (C {(match)} {(1)} {(1)} {(SQ <"f\\oo">)} {(SQ <"f\\\\oo">)})
    (C {(match)} {(1)} {(1)} {(ball)} {(SQ <"*[al]?">)})
    (C {(match)} {(0)} {(0)} {(ten)} {(SQ <"[ten]">)})
    (C {(match)} {(0)} {(1)} {(ten)} {(SQ <"**[!te]">)})
    (C {(match)} {(0)} {(0)} {(ten)} {(SQ <"**[!ten]">)})
    (C {(match)} {(1)} {(1)} {(ten)} {(SQ <"t[a-g]n">)})
    (C {(match)} {(0)} {(0)} {(ten)} {(SQ <"t[!a-g]n">)})
    (C {(match)} {(1)} {(1)} {(ton)} {(SQ <"t[!a-g]n">)})
    (C {(match)} {(1)} {(1)} {(ton)} {(SQ <"t[^a-g]n">)})
    (C {(match)} {(1)} {(x)} {(SQ <"a]b">)} {(SQ <"a[]]b">)})
    (C {(match)} {(1)} {(x)} {(a-b)} {(SQ <"a[]-]b">)})
    (C {(match)} {(1)} {(x)} {(SQ <"a]b">)} {(SQ <"a[]-]b">)})
    (C {(match)} {(0)} {(x)} {(aab)} {(SQ <"a[]-]b">)})
    (C {(match)} {(1)} {(x)} {(aab)} {(SQ <"a[]a-]b">)})
    (C {(match)} {(1)} {(1)} {(SQ <"]">)} {(SQ <"]">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/baz/bar>)} {(SQ <"foo*bar">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/baz/bar>)} {(SQ <"foo**bar">)})
    (C {(match)} {(0)} {(1)} {(SQ <foobazbar>)} {(SQ <"foo**bar">)})
    (C {(match)} {(1)} {(1)} {(SQ <foo/baz/bar>)} {(SQ <"foo/**/bar">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/baz/bar>)} {(SQ <"foo/**/**/bar">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/b/a/z/bar>)} {(SQ <"foo/**/bar">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/b/a/z/bar>)} {(SQ <"foo/**/**/bar">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/bar>)} {(SQ <"foo/**/bar">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/bar>)} {(SQ <"foo/**/**/bar">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/bar>)} {(SQ <"foo?bar">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/bar>)} {(SQ <"foo[/]bar">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/bar>)} {(SQ <"f[^eiu][^eiu][^eiu][^eiu][^eiu]r">)})
    (C {(match)} {(1)} {(1)} {(SQ <foo-bar>)} {(SQ <"f[^eiu][^eiu][^eiu][^eiu][^eiu]r">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo>)} {(SQ <"**/foo">)})
    (C {(match)} {(1)} {(x)} {(SQ <XXX/foo>)} {(SQ <"**/foo">)})
    (C {(match)} {(1)} {(0)} {(SQ <bar/baz/foo>)} {(SQ <"**/foo">)})
    (C {(match)} {(0)} {(0)} {(SQ <bar/baz/foo>)} {(SQ <"*/foo">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/bar/baz>)} {(SQ <"**/bar*">)})
    (C {(match)} {(1)} {(0)} {(SQ <deep/foo/bar/baz>)} {(SQ <"**/bar/*">)})
    (C {(match)} {(0)} {(0)} {(SQ <deep/foo/bar/baz/>)} {(SQ <"**/bar/*">)})
    (C {(match)} {(1)} {(0)} {(SQ <deep/foo/bar/baz/>)} {(SQ <"**/bar/**">)})
    (C {(match)} {(0)} {(0)} {(SQ <deep/foo/bar>)} {(SQ <"**/bar/*">)})
    (C {(match)} {(1)} {(0)} {(SQ <deep/foo/bar/>)} {(SQ <"**/bar/**">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo/bar/baz>)} {(SQ <"**/bar**">)})
    (C {(match)} {(1)} {(0)} {(SQ <foo/bar/baz/x>)} {(SQ <"*/bar/**">)})
    (C {(match)} {(0)} {(0)} {(SQ <deep/foo/bar/baz/x>)} {(SQ <"*/bar/**">)})
    (C {(match)} {(1)} {(0)} {(SQ <deep/foo/bar/baz/x>)} {(SQ <"**/bar/*/*">)})
    (C {(match)} {(0)} {(0)} {(SQ <acrt>)} {(SQ <"a[c-c]st">)})
    (C {(match)} {(1)} {(1)} {(SQ <acrt>)} {(SQ <"a[c-c]rt">)})
    (C {(match)} {(0)} {(0)} {(SQ <"]">)} {(SQ <"[!]-]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[!]-]">)})
    (C {(match)} {(0)} {(0)} {(SQ )} {(SQ <"\\">)})
    (C {(match)} {(0)} {(x)} {(SQ <"\\">)} {(SQ <"\\">)})
    (C {(match)} {(0)} {(x)} {(SQ <"XXX/\\">)} {(SQ <"*/\\">)})
    (C {(match)} {(1)} {(x)} {(SQ <"XXX/\\">)} {(SQ <"*/\\\\">)})
    (C {(match)} {(1)} {(1)} {(SQ <foo>)} {(SQ <foo>)})
    (C {(match)} {(1)} {(1)} {(SQ <"@foo">)} {(SQ <"@foo">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo>)} {(SQ <"@foo">)})
    (C {(match)} {(1)} {(1)} {(SQ <"[ab]">)} {(SQ <"\\[ab]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"[ab]">)} {(SQ <"[[]ab]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"[ab]">)} {(SQ <"[[:]ab]">)})
    (C {(match)} {(0)} {(x)} {(SQ <"[ab]">)} {(SQ <"[[::]ab]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"[ab]">)} {(SQ <"[[:digit]ab]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"[ab]">)} {(SQ <"[\\[:]ab]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"?a?b">)} {(SQ <"\\??\\?b">)})
    (C {(match)} {(1)} {(1)} {(SQ <abc>)} {(SQ <"\\a\\b\\c">)})
    (C {(match)} {(0)} {(0)} {(SQ <foo>)} {(SQ )})
    (C {(match)} {(1)} {(0)} {(SQ <foo/bar/baz/to>)} {(SQ <"**/t[o]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a1B>)} {(SQ <"[[:alpha:]][[:digit:]][[:upper:]]">)})
    (C {(match)} {(0)} {(x)} {(SQ <a>)} {(SQ <"[[:digit:][:upper:][:space:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <A>)} {(SQ <"[[:digit:][:upper:][:space:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <1>)} {(SQ <"[[:digit:][:upper:][:space:]]">)})
    (C {(match)} {(0)} {(x)} {(SQ <1>)} {(SQ <"[[:digit:][:upper:][:spaci:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <" ">)} {(SQ <"[[:digit:][:upper:][:space:]]">)})
    (C {(match)} {(0)} {(x)} {(SQ <.>)} {(SQ <"[[:digit:][:upper:][:space:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <.>)} {(SQ <"[[:digit:][:punct:][:space:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <5>)} {(SQ <"[[:xdigit:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <f>)} {(SQ <"[[:xdigit:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <D>)} {(SQ <"[[:xdigit:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <_>)} 
      {
        (SQ 
          <
"[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]"
          >
        )
      }
    )
    (C {(match)} {(1)} {(x)} {(SQ <_>)} 
      {
        (SQ 
          <
"[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]"
          >
        )
      }
    )
    (C {(match)} {(1)} {(x)} {(SQ <.>)} 
      {
        (SQ <"[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]">)
      }
    )
    (C {(match)} {(1)} {(x)} {(SQ <5>)} {(SQ <"[a-c[:digit:]x-z]">)})
    (C {(match)} {(1)} {(x)} {(SQ <b>)} {(SQ <"[a-c[:digit:]x-z]">)})
    (C {(match)} {(1)} {(x)} {(SQ <y>)} {(SQ <"[a-c[:digit:]x-z]">)})
    (C {(match)} {(0)} {(x)} {(SQ <q>)} {(SQ <"[a-c[:digit:]x-z]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"]">)} {(SQ <"[\\\\-^]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"[">)} {(SQ <"[\\\\-^]">)})
    (C {(match)} {(1)} {(x)} {(SQ <->)} {(SQ <"[\\-_]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"]">)} {(SQ <"[\\]]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"\\]">)} {(SQ <"[\\]]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"\\">)} {(SQ <"[\\]]">)})
    (C {(match)} {(0)} {(0)} {(SQ <ab>)} {(SQ <"a[]b">)})
    (C {(match)} {(0)} {(x)} {(SQ <"a[]b">)} {(SQ <"a[]b">)})
    (C {(match)} {(0)} {(x)} {(SQ <"ab[">)} {(SQ <"ab[">)})
    (C {(match)} {(0)} {(0)} {(SQ <ab>)} {(SQ <"[!">)})
    (C {(match)} {(0)} {(0)} {(SQ <ab>)} {(SQ <"[-">)})
    (C {(match)} {(1)} {(1)} {(SQ <->)} {(SQ <"[-]">)})
    (C {(match)} {(0)} {(0)} {(SQ <->)} {(SQ <"[a-">)})
    (C {(match)} {(0)} {(0)} {(SQ <->)} {(SQ <"[!a-">)})
    (C {(match)} {(1)} {(x)} {(SQ <->)} {(SQ <"[--A]">)})
    (C {(match)} {(1)} {(x)} {(SQ <5>)} {(SQ <"[--A]">)})
    (C {(match)} {(1)} {(1)} {(SQ <" ">)} {(SQ <"[ --]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"$">)} {(SQ <"[ --]">)})
    (C {(match)} {(1)} {(1)} {(SQ <->)} {(SQ <"[ --]">)})
    (C {(match)} {(0)} {(0)} {(SQ <0>)} {(SQ <"[ --]">)})
    (C {(match)} {(1)} {(x)} {(SQ <->)} {(SQ <"[---]">)})
    (C {(match)} {(1)} {(x)} {(SQ <->)} {(SQ <"[------]">)})
    (C {(match)} {(0)} {(0)} {(SQ <j>)} {(SQ <"[a-e-n]">)})
    (C {(match)} {(1)} {(x)} {(SQ <->)} {(SQ <"[a-e-n]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[!------]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"[">)} {(SQ <"[]-a]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"^">)} {(SQ <"[]-a]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"^">)} {(SQ <"[!]-a]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"[">)} {(SQ <"[!]-a]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"^">)} {(SQ <"[a^bc]">)})
    (C {(match)} {(1)} {(x)} {(SQ <"-b]">)} {(SQ <"[a-]b]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"\\">)} {(SQ <"[\\]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"\\">)} {(SQ <"[\\\\]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"\\">)} {(SQ <"[!\\\\]">)})
    (C {(match)} {(1)} {(1)} {(SQ <G>)} {(SQ <"[A-\\\\]">)})
    (C {(match)} {(0)} {(0)} {(SQ <aaabbb>)} {(SQ <"b*a">)})
    (C {(match)} {(0)} {(0)} {(SQ <aabcaa>)} {(SQ <"*ba*">)})
    (C {(match)} {(1)} {(1)} {(SQ <",">)} {(SQ <"[,]">)})
    (C {(match)} {(1)} {(1)} {(SQ <",">)} {(SQ <"[\\\\,]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"\\">)} {(SQ <"[\\\\,]">)})
    (C {(match)} {(1)} {(1)} {(SQ <->)} {(SQ <"[,-.]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"+">)} {(SQ <"[,-.]">)})
    (C {(match)} {(0)} {(0)} {(SQ <"-.]">)} {(SQ <"[,-.]">)})
    (C {(match)} {(1)} {(1)} {(SQ <2>)} {(SQ <"[\\1-\\3]">)})
    (C {(match)} {(1)} {(1)} {(SQ <3>)} {(SQ <"[\\1-\\3]">)})
    (C {(match)} {(0)} {(0)} {(SQ <4>)} {(SQ <"[\\1-\\3]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"\\">)} {(SQ <"[[-\\]]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"[">)} {(SQ <"[[-\\]]">)})
    (C {(match)} {(1)} {(1)} {(SQ <"]">)} {(SQ <"[[-\\]]">)})
    (C {(match)} {(0)} {(0)} {(SQ <->)} {(SQ <"[[-\\]]">)})
    (C {(match)} {(1)} {(1)} {(SQ <-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1>)} 
      {(SQ <"-*-*-*-*-*-*-12-*-*-*-m-*-*-*">)}
    )
    (C {(match)} {(0)} {(0)} {(SQ <-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1>)} 
      {(SQ <"-*-*-*-*-*-*-12-*-*-*-m-*-*-*">)}
    )
    (C {(match)} {(0)} {(0)} {(SQ <-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1>)} 
      {(SQ <"-*-*-*-*-*-*-12-*-*-*-m-*-*-*">)}
    )
    (C {(match)} {(1)} {(1)} {(SQ <XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1>)} 
      {(SQ <"XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*">)}
    )
    (C {(match)} {(0)} {(0)} {(SQ <XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1>)} 
      {(SQ <"XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*">)}
    )
    (C {(match)} {(1)} {(0)} {(SQ <abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt>)} 
      {(SQ <"**/*a*b*g*n*t">)}
    )
    (C {(match)} {(0)} {(0)} {(SQ <abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz>)} 
      {(SQ <"**/*a*b*g*n*t">)}
    )
    (C {(match)} {(0)} {(x)} {(foo)} {(SQ <"*/*/*">)})
    (C {(match)} {(0)} {(x)} {(foo/bar)} {(SQ <"*/*/*">)})
    (C {(match)} {(1)} {(x)} {(foo/bba/arr)} {(SQ <"*/*/*">)})
    (C {(match)} {(0)} {(x)} {(foo/bb/aa/rr)} {(SQ <"*/*/*">)})
    (C {(match)} {(1)} {(x)} {(foo/bb/aa/rr)} {(SQ <"**/**/**">)})
    (C {(match)} {(1)} {(x)} {(abcXdefXghi)} {(SQ <"*X*i">)})
    (C {(match)} {(0)} {(x)} {(ab/cXd/efXg/hi)} {(SQ <"*X*i">)})
    (C {(match)} {(1)} {(x)} {(ab/cXd/efXg/hi)} {(SQ <"*/*X*/*/*i">)})
    (C {(match)} {(1)} {(x)} {(ab/cXd/efXg/hi)} {(SQ <"**/*X*/**/*i">)})
    (C {(pathmatch)} {(1)} {(foo)} {(foo)})
    (C {(pathmatch)} {(0)} {(foo)} {(fo)})
    (C {(pathmatch)} {(1)} {(foo/bar)} {(foo/bar)})
    (C {(pathmatch)} {(1)} {(foo/bar)} {(SQ <"foo/*">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo/*">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo/**">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo*">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo**">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo/*arr">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"foo/**arr">)})
    (C {(pathmatch)} {(0)} {(foo/bba/arr)} {(SQ <"foo/*z">)})
    (C {(pathmatch)} {(0)} {(foo/bba/arr)} {(SQ <"foo/**z">)})
    (C {(pathmatch)} {(1)} {(foo/bar)} {(SQ <"foo?bar">)})
    (C {(pathmatch)} {(1)} {(foo/bar)} {(SQ <"foo[/]bar">)})
    (C {(pathmatch)} {(0)} {(foo)} {(SQ <"*/*/*">)})
    (C {(pathmatch)} {(0)} {(foo/bar)} {(SQ <"*/*/*">)})
    (C {(pathmatch)} {(1)} {(foo/bba/arr)} {(SQ <"*/*/*">)})
    (C {(pathmatch)} {(1)} {(foo/bb/aa/rr)} {(SQ <"*/*/*">)})
    (C {(pathmatch)} {(1)} {(abcXdefXghi)} {(SQ <"*X*i">)})
    (C {(pathmatch)} {(1)} {(ab/cXd/efXg/hi)} {(SQ <"*/*X*/*/*i">)})
    (C {(pathmatch)} {(1)} {(ab/cXd/efXg/hi)} {(SQ <"*Xg*i">)})
    (C {(match)} {(0)} {(x)} {(SQ <a>)} {(SQ <"[A-Z]">)})
    (C {(match)} {(1)} {(x)} {(SQ <A>)} {(SQ <"[A-Z]">)})
    (C {(match)} {(0)} {(x)} {(SQ <A>)} {(SQ <"[a-z]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[a-z]">)})
    (C {(match)} {(0)} {(x)} {(SQ <a>)} {(SQ <"[[:upper:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <A>)} {(SQ <"[[:upper:]]">)})
    (C {(match)} {(0)} {(x)} {(SQ <A>)} {(SQ <"[[:lower:]]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[[:lower:]]">)})
    (C {(match)} {(0)} {(x)} {(SQ <A>)} {(SQ <"[B-Za]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[B-Za]">)})
    (C {(match)} {(0)} {(x)} {(SQ <A>)} {(SQ <"[B-a]">)})
    (C {(match)} {(1)} {(x)} {(SQ <a>)} {(SQ <"[B-a]">)})
    (C {(match)} {(0)} {(x)} {(SQ <z>)} {(SQ <"[Z-y]">)})
    (C {(match)} {(1)} {(x)} {(SQ <Z>)} {(SQ <"[Z-y]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[A-Z]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[A-Z]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[a-z]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[a-z]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[[:upper:]]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[[:upper:]]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[[:lower:]]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[[:lower:]]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[B-Za]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[B-Za]">)})
    (C {(imatch)} {(1)} {(SQ <A>)} {(SQ <"[B-a]">)})
    (C {(imatch)} {(1)} {(SQ <a>)} {(SQ <"[B-a]">)})
    (C {(imatch)} {(1)} {(SQ <z>)} {(SQ <"[Z-y]">)})
    (C {(imatch)} {(1)} {(SQ <Z>)} {(SQ <"[Z-y]">)})
    (C {(test_done)})
  ]
)