(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'test git rev-parse --parseopt' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup optionspec' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\tsed -e "s/^|//" >optionspec <<\\EOF\n' span_id:22) (Token id:Id.Lit_Chars val:'|some-command [options] <args>...\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'|\n' span_id:24) (Token id:Id.Lit_Chars val:'|some-command does foo and bar!\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'|--\n' span_id:26) (Token id:Id.Lit_Chars val:'|h,help    show the help\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'|\n' span_id:28) (Token id:Id.Lit_Chars val:'|foo       some nifty option --foo\n' span_id:29) 
          (Token
            id: Id.Lit_Chars
            val: '|bar=      some cool option --bar with an argument\n'
            span_id: 30
          ) (Token id:Id.Lit_Chars val:'|b,baz     a short and long option\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'|\n' span_id:32) (Token id:Id.Lit_Chars val:'| An option group Header\n' span_id:33) 
          (Token
            id: Id.Lit_Chars
            val: '|C?        option C with an optional argument\n'
            span_id: 34
          ) (Token id:Id.Lit_Chars val:'|d,data?   short and long option with an optional argument\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'|\n' span_id:36) (Token id:Id.Lit_Chars val:'| Argument hints\n' span_id:37) 
          (Token
            id: Id.Lit_Chars
            val: '|B=arg     short option required argument\n'
            span_id: 38
          ) (Token id:Id.Lit_Chars val:'|bar2=arg  long option required argument\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '|e,fuz=with-space  short and long option required argument\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'|s?some    short option optional argument\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '|long?data long option optional argument\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'|g,fluf?path     short and long option optional argument\n' span_id:43) 
          (Token
            id: Id.Lit_Chars
            val: '|longest=very-long-argument-hint  a very long argument hint\n'
            span_id: 44
          ) (Token id:Id.Lit_Chars val:'|pair=key=value  with an equals sign in the hint\n' span_id:45) 
          (Token
            id: Id.Lit_Chars
            val: '|short-hint=a    with a one symbol hint\n'
            span_id: 46
          ) (Token id:Id.Lit_Chars val:'|\n' span_id:47) (Token id:Id.Lit_Chars val:'|Extras\n' span_id:48) 
          (Token
            id: Id.Lit_Chars
            val: '|extra1    line above used to cause a segfault but no longer does\n'
            span_id: 49
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --parseopt help output' span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/^|//" >expect <<\\END_EXPECT &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'|cat <<\\EOF\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '|usage: some-command [options] <args>...\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'|\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'|    some-command does foo and bar!\n' span_id:66) (Token id:Id.Lit_Chars val:'|\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '|    -h, --help            show the help\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'|    --foo                 some nifty option --foo\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '|    --bar ...             some cool option --bar with an argument\n'
            span_id: 70
          ) (Token id:Id.Lit_Chars val:'|    -b, --baz             a short and long option\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'|\n' span_id:72) (Token id:Id.Lit_Chars val:'|An option group Header\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '|    -C[...]               option C with an optional argument\n'
            span_id: 74
          ) 
          (Token
            id: Id.Lit_Chars
            val: '|    -d, --data[=...]      short and long option with an optional argument\n'
            span_id: 75
          ) (Token id:Id.Lit_Chars val:'|\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'|Argument hints\n' span_id:77) (Token id:Id.Lit_Chars val:'|    -B <arg>              short option required argument\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '|    --bar2 <arg>          long option required argument\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'|    -e, --fuz <with-space>\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '|                          short and long option required argument\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'|    -s[<some>]            short option optional argument\n' span_id:82) 
          (Token
            id: Id.Lit_Chars
            val: '|    --long[=<data>]       long option optional argument\n'
            span_id: 83
          ) 
          (Token
            id: Id.Lit_Chars
            val: '|    -g, --fluf[=<path>]   short and long option optional argument\n'
            span_id: 84
          ) (Token id:Id.Lit_Chars val:'|    --longest <very-long-argument-hint>\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '|                          a very long argument hint\n'
            span_id: 86
          ) (Token id:Id.Lit_Chars val:'|    --pair <key=value>    with an equals sign in the hint\n' span_id:87) 
          (Token
            id: Id.Lit_Chars
            val: '|    --short-hint <a>      with a one symbol hint\n'
            span_id: 88
          ) (Token id:Id.Lit_Chars val:'|\n' span_id:89) (Token id:Id.Lit_Chars val:'|Extras\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: 
'|    --extra1              line above used to cause a segfault but no longer does\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'|\n' span_id:92) (Token id:Id.Lit_Chars val:'|EOF\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'END_EXPECT\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:96)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.1' span_id:103))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo --bar 'ham' -b -- 'arg'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt' span_id:117))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt -- --foo --bar=ham --baz arg < optionspec > output &&\n'
            span_id: 122
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:123)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt with mixed options and arguments'
            span_id: 130
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt -- --foo arg --bar=ham --baz < optionspec > output &&\n'
            span_id: 135
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:136)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.2' span_id:143))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- 'arg' '--bar=ham'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt with --' span_id:157))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:161) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --parseopt -- --foo -- arg --bar=ham < optionspec > output &&\n'
            span_id: 162
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:163)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --stop-at-non-option' span_id:170))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --stop-at-non-option -- --foo arg --bar=ham < optionspec > output &&\n'
            span_id: 175
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:176)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.3' span_id:183))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- '--' 'arg' '--bar=ham'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --keep-dashdash' span_id:197))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:201) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --keep-dashdash -- --foo -- arg --bar=ham < optionspec > output &&\n'
            span_id: 202
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:203)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.4' span_id:210))} 
      {(DQ ('\n') ('\tcat >expect <<EOF\n') ("set -- --foo -- '--' 'arg' '--spam=ham'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt --keep-dashdash --stop-at-non-option with --'
            span_id: 224
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo -- arg --spam=ham <optionspec >output &&\n'
            span_id: 229
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:230)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.5' span_id:237))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- 'arg' '--spam=ham'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt --keep-dashdash --stop-at-non-option without --'
            span_id: 251
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:255) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo arg --spam=ham <optionspec >output &&\n'
            span_id: 256
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:257)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.6' span_id:264))} 
      {
        (DQ ('\n') ('\tcat > expect <<EOF\n') 
          ("set -- --foo --bar='z' --baz -C'Z' --data='A' -- 'arg'\n") ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --stuck-long' span_id:278))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:282) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --stuck-long -- --foo --bar=z -b arg -CZ -dA <optionspec >output &&\n'
            span_id: 283
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:284)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.7' span_id:291))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --data='' -C --baz -- 'arg'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt --stuck-long and empty optional argument'
            span_id: 305
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit rev-parse --parseopt --stuck-long -- --data= arg -C -b <optionspec >output &&\n'
            span_id: 310
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:311)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.8' span_id:318))} 
      {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --data --baz -- 'arg'\n") ('EOF\n'))}
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt --stuck-long and long option with unset optional argument'
            span_id: 332
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:336) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --parseopt --stuck-long -- --data arg -b <optionspec >output &&\n'
            span_id: 337
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:338)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test --parseopt --stuck-long and short option with unset optional argument'
            span_id: 345
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:349) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse --parseopt --stuck-long -- -d arg -b <optionspec >output &&\n'
            span_id: 350
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:351)
        )
      }
    )
    (C {(test_done)})
  ]
)