(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)})
  ]
)