(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'wildmatch tests'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShFunction
      name: match
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$1')} {<Id.Lit_Equals '='>} 
                              {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<test_expect_success>} 
                      {
                        (DQ <'wildmatch:     match \''> ($ Id.VSub_Number '$3') <'\' \''> 
                          ($ Id.VSub_Number '$4') <'\''>
                        )
                      } 
                      {
                        (DQ <'\n'> <'\t    test-wildmatch wildmatch \''> ($ Id.VSub_Number '$3') 
                          <'\' \''> ($ Id.VSub_Number '$4') <'\'\n'> <'\t'>
                        )
                      }
                    )
                  ]
                  spids: [22 35]
                )
              ]
              else_action: [
                (C {<test_expect_success>} 
                  {
                    (DQ <'wildmatch:  no match \''> ($ Id.VSub_Number '$3') <'\' \''> 
                      ($ Id.VSub_Number '$4') <'\''>
                    )
                  } 
                  {
                    (DQ <'\n'> <'\t    ! test-wildmatch wildmatch \''> ($ Id.VSub_Number '$3') <'\' \''> 
                      ($ Id.VSub_Number '$4') <'\'\n'> <'\t'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: imatch
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$1')} {<Id.Lit_Equals '='>} 
                              {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<test_expect_success>} 
                      {
                        (DQ <'iwildmatch:    match \''> ($ Id.VSub_Number '$2') <'\' \''> 
                          ($ Id.VSub_Number '$3') <'\''>
                        )
                      } 
                      {
                        (DQ <'\n'> <'\t    test-wildmatch iwildmatch \''> ($ Id.VSub_Number '$2') 
                          <'\' \''> ($ Id.VSub_Number '$3') <'\'\n'> <'\t'>
                        )
                      }
                    )
                  ]
                  spids: [95 108]
                )
              ]
              else_action: [
                (C {<test_expect_success>} 
                  {
                    (DQ <'iwildmatch: no match \''> ($ Id.VSub_Number '$2') <'\' \''> 
                      ($ Id.VSub_Number '$3') <'\''>
                    )
                  } 
                  {
                    (DQ <'\n'> <'\t    ! test-wildmatch iwildmatch \''> ($ Id.VSub_Number '$2') 
                      <'\' \''> ($ Id.VSub_Number '$3') <'\'\n'> <'\t'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: pathmatch
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$1')} {<Id.Lit_Equals '='>} 
                              {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<test_expect_success>} 
                      {
                        (DQ <'pathmatch:     match \''> ($ Id.VSub_Number '$2') <'\' \''> 
                          ($ Id.VSub_Number '$3') <'\''>
                        )
                      } 
                      {
                        (DQ <'\n'> <'\t    test-wildmatch pathmatch \''> ($ Id.VSub_Number '$2') 
                          <'\' \''> ($ Id.VSub_Number '$3') <'\'\n'> <'\t'>
                        )
                      }
                    )
                  ]
                  spids: [168 181]
                )
              ]
              else_action: [
                (C {<test_expect_success>} 
                  {
                    (DQ <'pathmatch:  no match \''> ($ Id.VSub_Number '$2') <'\' \''> 
                      ($ Id.VSub_Number '$3') <'\''>
                    )
                  } 
                  {
                    (DQ <'\n'> <'\t    ! test-wildmatch pathmatch \''> ($ Id.VSub_Number '$2') <'\' \''> 
                      ($ Id.VSub_Number '$3') <'\'\n'> <'\t'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (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>})
  ]
)