(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:'Tests git bisect functionality' span_id:14))}
          spids: [12]
        )
      ]
    )
    (command.Simple
      words: [{(exec)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Less val:'<' span_id:20)
          fd: -1
          arg_word: {(/dev/null)}
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: add_line_into_file
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_line)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [36]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_file)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [40]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ ($ Id.VSub_DollarName '$_file'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:56)
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$_line'))}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_DGreat val:'>>' span_id:67)
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$_file')}
                            )
                          ]
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:73)
                          arg_word: {($ Id.VSub_QMark '$?')}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MSG)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ('Add <') ($ Id.VSub_DollarName '$_line') ('> into <') 
                                ($ Id.VSub_DollarName '$_file') ('>.')
                              )
                            }
                          spids: [78]
                        )
                      ]
                    )
                  ]
                  spids: [45 58]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$_line'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:97)
                          fd: -1
                          arg_word: {($ Id.VSub_DollarName '$_file')}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:103)
                      arg_word: {($ Id.VSub_QMark '$?')}
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(git)} {(add)} {($ Id.VSub_DollarName '$_file')})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:116)
                      arg_word: {($ Id.VSub_QMark '$?')}
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:MSG)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ ('Create file <') ($ Id.VSub_DollarName '$_file') ('> with <') 
                            ($ Id.VSub_DollarName '$_line') ('> inside.')
                          )
                        }
                      spids: [121]
                    )
                  ]
                )
              ]
            )
            (C {(test_tick)})
            (C {(git)} {(commit)} {(--quiet)} {(-m)} {(DQ ($ Id.VSub_DollarName '$MSG'))} 
              {($ Id.VSub_DollarName '$_file')}
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH1)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [155]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH2)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [157]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH3)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [159]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH4)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [161]
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'set up basic repo with 1 file (hello) and 4 commits'
            span_id: 167
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '     add_line_into_file "1: Hello World" hello &&\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'     HASH1=$(git rev-parse --verify HEAD) &&\n' span_id:173) 
          (Token
            id: Id.Lit_Chars
            val: '     add_line_into_file "2: A new day for git" hello &&\n'
            span_id: 174
          ) (Token id:Id.Lit_Chars val:'     HASH2=$(git rev-parse --verify HEAD) &&\n' span_id:175) 
          (Token
            id: Id.Lit_Chars
            val: '     add_line_into_file "3: Another new day for git" hello &&\n'
            span_id: 176
          ) (Token id:Id.Lit_Chars val:'     HASH3=$(git rev-parse --verify HEAD) &&\n' span_id:177) 
          (Token
            id: Id.Lit_Chars
            val: '     add_line_into_file "4: Ciao for now" hello &&\n'
            span_id: 178
          ) (Token id:Id.Lit_Chars val:'     HASH4=$(git rev-parse --verify HEAD)\n' span_id:179)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect starts with only one bad' span_id:186))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH4 &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\tgit bisect next\n' span_id:194)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect does not start with only one good' span_id:201))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:205) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:207) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect next\n' span_id:209)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start with one bad and good' span_id:216))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:220) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:222) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:223) (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH4 &&\n' span_id:224) 
          (Token id:Id.Lit_Chars val:'\tgit bisect next\n' span_id:225)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect fails if given any junk instead of revs' span_id:232))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:236) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect start foo $HASH1 -- &&\n' span_id:238) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start $HASH4 $HASH1 bar -- &&\n'
            span_id: 239
          ) (Token id:Id.Lit_Chars val:'\ttest -z "$(git for-each-ref "refs/bisect/*")" &&\n' span_id:240) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(ls .git/BISECT_* 2>/dev/null)" &&\n'
            span_id: 241
          ) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:242) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect good foo $HASH1 &&\n'
            span_id: 243
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect good $HASH1 bar &&\n' span_id:244) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect bad frotz &&\n'
            span_id: 245
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect bad $HASH3 $HASH4 &&\n' span_id:246) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect skip bar $HASH3 &&\n'
            span_id: 247
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect skip $HASH1 foo &&\n' span_id:248) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git for-each-ref "refs/bisect/*")" &&\n'
            span_id: 249
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:250) 
          (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH4\n' span_id:251)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect reset: back in the master branch' span_id:258))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\techo "* master" > branch.expect &&\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:265) (Token id:Id.Lit_Chars val:'\tcmp branch.expect branch.output\n' span_id:266)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect reset: back in another branch' span_id:273))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:277) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b other &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:279) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:280) (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH3 &&\n' span_id:281) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\techo "  master" > branch.expect &&\n' span_id:283) 
          (Token id:Id.Lit_Chars val:'\techo "* other" >> branch.expect &&\n' span_id:284) (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:285) 
          (Token id:Id.Lit_Chars val:'\tcmp branch.expect branch.output\n' span_id:286)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect reset when not bisecting' span_id:293))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\tcmp branch.expect branch.output\n' span_id:300)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect reset removes packed refs' span_id:307))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:311) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:312) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:313) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:314) (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH3 &&\n' span_id:315) 
          (Token id:Id.Lit_Chars val:'\tgit pack-refs --all --prune &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\tgit bisect next &&\n' span_id:317) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\ttest -z "$(git for-each-ref "refs/bisect/*")" &&\n' span_id:319) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git for-each-ref "refs/heads/bisect")"\n'
            span_id: 320
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect reset removes bisect state after --no-checkout'
            span_id: 327
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\tgit bisect start --no-checkout &&\n' span_id:333) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH3 &&\n' span_id:335) 
          (Token id:Id.Lit_Chars val:'\tgit bisect next &&\n' span_id:336) (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:337) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git for-each-ref "refs/bisect/*")" &&\n'
            span_id: 338
          ) (Token id:Id.Lit_Chars val:'\ttest -z "$(git for-each-ref "refs/heads/bisect")" &&\n' span_id:339) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git for-each-ref "BISECT_HEAD")"\n'
            span_id: 340
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start: back in good branch' span_id:347))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:351) 
          (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:352) (Token id:Id.Lit_Chars val:'\tgrep "* other" branch.output > /dev/null &&\n' span_id:353) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start $HASH4 $HASH1 -- &&\n'
            span_id: 354
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:355) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start $HASH4 $HASH1 -- &&\n'
            span_id: 356
          ) (Token id:Id.Lit_Chars val:'\tgit bisect bad &&\n' span_id:357) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:358) (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:359) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "* other" branch.output > /dev/null\n'
            span_id: 360
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect start: no ".git/BISECT_START" created if junk rev'
            span_id: 367
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:371) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect start $HASH4 foo -- &&\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:374) (Token id:Id.Lit_Chars val:'\tgrep "* other" branch.output > /dev/null &&\n' span_id:375) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail test -e .git/BISECT_START\n'
            span_id: 376
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect start: existing ".git/BISECT_START" not modified if junk rev'
            span_id: 383
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:387) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start $HASH4 $HASH1 -- &&\n'
            span_id: 388
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:389) 
          (Token id:Id.Lit_Chars val:'\tcp .git/BISECT_START saved &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect start $HASH4 foo -- &&\n' span_id:391) 
          (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:392) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_i18ngrep "* (no branch, bisect started on other)" branch.output > /dev/null &&\n'
            span_id: 393
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp saved .git/BISECT_START\n' span_id:394)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect start: no ".git/BISECT_START" if mistaken rev'
            span_id: 400
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:404) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start $HASH4 $HASH1 -- &&\n'
            span_id: 405
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:406) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start $HASH1 $HASH4 -- &&\n'
            span_id: 407
          ) (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:408) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "* other" branch.output > /dev/null &&\n'
            span_id: 409
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test -e .git/BISECT_START\n' span_id:410)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect start: no ".git/BISECT_START" if checkout error'
            span_id: 417
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:421) 
          (Token id:Id.Lit_Chars val:'\techo "temp stuff" > hello &&\n' span_id:422) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect start $HASH4 $HASH1 -- &&\n' span_id:423) 
          (Token id:Id.Lit_Chars val:'\tgit branch &&\n' span_id:424) (Token id:Id.Lit_Chars val:'\tgit branch > branch.output &&\n' span_id:425) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "* other" branch.output > /dev/null &&\n'
            span_id: 426
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test -e .git/BISECT_START &&\n' span_id:427) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git for-each-ref "refs/bisect/*")" &&\n'
            span_id: 428
          ) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD hello\n' span_id:429)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip: successful result' span_id:445))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:449) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git bisect reset &&\n'
            span_id: 450
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:451) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH4 $HASH1 &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:453) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect bad > my_bisect_log.txt &&\n'
            span_id: 454
          ) (Token id:Id.Lit_Chars val:'\tgrep "$HASH2 is the first bad commit" my_bisect_log.txt\n' span_id:455)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip: cannot tell between 3 commits' span_id:471))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:475) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git bisect reset &&\n'
            span_id: 476
          ) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH4 $HASH1 &&\n' span_id:477) 
          (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:478) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 2 git bisect skip >my_bisect_log.txt &&\n'
            span_id: 479
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "first bad commit could be any of" my_bisect_log.txt &&\n'
            span_id: 480
          ) (Token id:Id.Lit_Chars val:'\t! grep $HASH1 my_bisect_log.txt &&\n' span_id:481) 
          (Token id:Id.Lit_Chars val:'\tgrep $HASH2 my_bisect_log.txt &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\tgrep $HASH3 my_bisect_log.txt &&\n' span_id:483) 
          (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt\n' span_id:484)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip: cannot tell between 2 commits' span_id:503))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:507) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git bisect reset &&\n'
            span_id: 508
          ) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH4 $HASH1 &&\n' span_id:509) 
          (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:510) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 2 git bisect good >my_bisect_log.txt &&\n'
            span_id: 511
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "first bad commit could be any of" my_bisect_log.txt &&\n'
            span_id: 512
          ) (Token id:Id.Lit_Chars val:'\t! grep $HASH1 my_bisect_log.txt &&\n' span_id:513) 
          (Token id:Id.Lit_Chars val:'\t! grep $HASH2 my_bisect_log.txt &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\tgrep $HASH3 my_bisect_log.txt &&\n' span_id:515) 
          (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt\n' span_id:516)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip: with commit both bad and skipped' span_id:535))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:539) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished git bisect reset &&\n'
            span_id: 540
          ) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:541) 
          (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:542) (Token id:Id.Lit_Chars val:'\tgit bisect bad &&\n' span_id:543) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good $HASH1 &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:545) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 2 git bisect good >my_bisect_log.txt &&\n'
            span_id: 546
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "first bad commit could be any of" my_bisect_log.txt &&\n'
            span_id: 547
          ) (Token id:Id.Lit_Chars val:'\t! grep $HASH1 my_bisect_log.txt &&\n' span_id:548) 
          (Token id:Id.Lit_Chars val:'\t! grep $HASH2 my_bisect_log.txt &&\n' span_id:549) (Token id:Id.Lit_Chars val:'\tgrep $HASH3 my_bisect_log.txt &&\n' span_id:550) 
          (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt\n' span_id:551)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"git bisect run" simple case' span_id:566))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'echo "#"\\!"/bin/sh" > test_script.sh &&\n' span_id:572) 
          (Token
            id: Id.Lit_Chars
            val: '     echo "grep Another hello > /dev/null" >> test_script.sh &&\n'
            span_id: 573
          ) (Token id:Id.Lit_Chars val:'     echo "test \\$? -ne 0" >> test_script.sh &&\n' span_id:574) 
          (Token id:Id.Lit_Chars val:'     chmod +x test_script.sh &&\n' span_id:575) (Token id:Id.Lit_Chars val:'     git bisect start &&\n' span_id:576) 
          (Token id:Id.Lit_Chars val:'     git bisect good $HASH1 &&\n' span_id:577) (Token id:Id.Lit_Chars val:'     git bisect bad $HASH4 &&\n' span_id:578) 
          (Token
            id: Id.Lit_Chars
            val: '     git bisect run ./test_script.sh > my_bisect_log.txt &&\n'
            span_id: 579
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     grep "$HASH3 is the first bad commit" my_bisect_log.txt &&\n'
            span_id: 580
          ) (Token id:Id.Lit_Chars val:'     git bisect reset' span_id:581)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '"git bisect run" with more complex "git bisect start"'
            span_id: 596
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'echo "#"\\!"/bin/sh" > test_script.sh &&\n' span_id:602) 
          (Token
            id: Id.Lit_Chars
            val: '     echo "grep Ciao hello > /dev/null" >> test_script.sh &&\n'
            span_id: 603
          ) (Token id:Id.Lit_Chars val:'     echo "test \\$? -ne 0" >> test_script.sh &&\n' span_id:604) 
          (Token id:Id.Lit_Chars val:'     chmod +x test_script.sh &&\n' span_id:605) (Token id:Id.Lit_Chars val:'     git bisect start $HASH4 $HASH1 &&\n' span_id:606) 
          (Token
            id: Id.Lit_Chars
            val: '     git bisect run ./test_script.sh > my_bisect_log.txt &&\n'
            span_id: 607
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     grep "$HASH4 is the first bad commit" my_bisect_log.txt &&\n'
            span_id: 608
          ) (Token id:Id.Lit_Chars val:'     git bisect reset' span_id:609)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH5)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [622]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip: add line and then a new test' span_id:627))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:631) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "5: Another new line." hello &&\n'
            span_id: 632
          ) (Token id:Id.Lit_Chars val:'\tHASH5=$(git rev-parse --verify HEAD) &&\n' span_id:633) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH5 $HASH1 &&\n' span_id:634) (Token id:Id.Lit_Chars val:'\tgit bisect skip &&\n' span_id:635) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect good > my_bisect_log.txt &&\n'
            span_id: 636
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH5 is the first bad commit" my_bisect_log.txt &&\n'
            span_id: 637
          ) (Token id:Id.Lit_Chars val:'\tgit bisect log > log_to_replay.txt &&\n' span_id:638) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:639)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip and bisect replay' span_id:646))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:650) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect replay log_to_replay.txt > my_bisect_log.txt &&\n'
            span_id: 651
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH5 is the first bad commit" my_bisect_log.txt &&\n'
            span_id: 652
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:653)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH6)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [657]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect run & skip: cannot tell between 2' span_id:662))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:666) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "6: Yet a line." hello &&\n'
            span_id: 667
          ) (Token id:Id.Lit_Chars val:'\tHASH6=$(git rev-parse --verify HEAD) &&\n' span_id:668) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "#"\\!"/bin/sh" > test_script.sh &&\n'
            span_id: 669
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\techo "sed -ne \\\\\\$p hello | grep Ciao > /dev/null && exit 125" >> test_script.sh &&\n'
            span_id: 670
          ) (Token id:Id.Lit_Chars val:'\techo "grep line hello > /dev/null" >> test_script.sh &&\n' span_id:671) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "test \\$? -ne 0" >> test_script.sh &&\n'
            span_id: 672
          ) (Token id:Id.Lit_Chars val:'\tchmod +x test_script.sh &&\n' span_id:673) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH6 $HASH1 &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\tif git bisect run ./test_script.sh > my_bisect_log.txt\n' span_id:675) 
          (Token id:Id.Lit_Chars val:'\tthen\n' span_id:676) (Token id:Id.Lit_Chars val:'\t\techo Oops, should have failed.\n' span_id:677) 
          (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:678) (Token id:Id.Lit_Chars val:'\telse\n' span_id:679) 
          (Token id:Id.Lit_Chars val:'\t\ttest $? -eq 2 &&\n' span_id:680) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgrep "first bad commit could be any of" my_bisect_log.txt &&\n'
            span_id: 681
          ) (Token id:Id.Lit_Chars val:'\t\t! grep $HASH3 my_bisect_log.txt &&\n' span_id:682) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t! grep $HASH6 my_bisect_log.txt &&\n'
            span_id: 683
          ) (Token id:Id.Lit_Chars val:'\t\tgrep $HASH4 my_bisect_log.txt &&\n' span_id:684) 
          (Token id:Id.Lit_Chars val:'\t\tgrep $HASH5 my_bisect_log.txt\n' span_id:685) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:686)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:HASH7)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [690]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect run & skip: find first bad' span_id:695))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:699) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:700) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "7: Should be the last line." hello &&\n'
            span_id: 701
          ) (Token id:Id.Lit_Chars val:'\tHASH7=$(git rev-parse --verify HEAD) &&\n' span_id:702) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "#"\\!"/bin/sh" > test_script.sh &&\n'
            span_id: 703
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\techo "sed -ne \\\\\\$p hello | grep Ciao > /dev/null && exit 125" >> test_script.sh &&\n'
            span_id: 704
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\techo "sed -ne \\\\\\$p hello | grep day > /dev/null && exit 125" >> test_script.sh &&\n'
            span_id: 705
          ) (Token id:Id.Lit_Chars val:'\techo "grep Yet hello > /dev/null" >> test_script.sh &&\n' span_id:706) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "test \\$? -ne 0" >> test_script.sh &&\n'
            span_id: 707
          ) (Token id:Id.Lit_Chars val:'\tchmod +x test_script.sh &&\n' span_id:708) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH7 $HASH1 &&\n' span_id:709) (Token id:Id.Lit_Chars val:'\tgit bisect run ./test_script.sh > my_bisect_log.txt &&\n' span_id:710) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH6 is the first bad commit" my_bisect_log.txt\n'
            span_id: 711
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect skip only one range' span_id:718))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:722) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:723) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH7 $HASH1 &&\n' span_id:724) 
          (Token id:Id.Lit_Chars val:'\tgit bisect skip $HASH1..$HASH5 &&\n' span_id:725) (Token id:Id.Lit_Chars val:'\ttest "$HASH6" = "$(git rev-parse --verify HEAD)" &&\n' span_id:726) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect bad > my_bisect_log.txt &&\n'
            span_id: 727
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "first bad commit could be any of" my_bisect_log.txt\n'
            span_id: 728
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'bisect skip many ranges' span_id:735))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:739) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH7 $HASH1 &&\n' span_id:740) (Token id:Id.Lit_Chars val:'\ttest "$HASH4" = "$(git rev-parse --verify HEAD)" &&\n' span_id:741) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect skip $HASH2 $HASH2.. ..$HASH5 &&\n'
            span_id: 742
          ) (Token id:Id.Lit_Chars val:'\ttest "$HASH6" = "$(git rev-parse --verify HEAD)" &&\n' span_id:743) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect bad > my_bisect_log.txt &&\n'
            span_id: 744
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "first bad commit could be any of" my_bisect_log.txt\n'
            span_id: 745
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect starting with a detached HEAD' span_id:752))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:756) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:757) (Token id:Id.Lit_Chars val:'\tgit checkout master^ &&\n' span_id:758) 
          (Token
            id: Id.Lit_Chars
            val: '\tHEAD=$(git rev-parse --verify HEAD) &&\n'
            span_id: 759
          ) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:760) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $HEAD = $(cat .git/BISECT_START) &&\n'
            span_id: 761
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:762) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $HEAD = $(git rev-parse --verify HEAD)\n'
            span_id: 763
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect errors out if bad and good are mistaken' span_id:770))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:774) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:775) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start $HASH2 $HASH4 2> rev_list_error &&\n'
            span_id: 776
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "mistook good and bad" rev_list_error &&\n' span_id:777) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:778)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect does not create a "bisect" branch' span_id:785))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:789) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:790) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH7 $HASH1 &&\n' span_id:791) 
          (Token id:Id.Lit_Chars val:'\tgit branch bisect &&\n' span_id:792) (Token id:Id.Lit_Chars val:'\trev_hash4=$(git rev-parse --verify HEAD) &&\n' span_id:793) 
          (Token id:Id.Lit_Chars val:'\ttest "$rev_hash4" = "$HASH4" &&\n' span_id:794) (Token id:Id.Lit_Chars val:'\tgit branch -D bisect &&\n' span_id:795) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:796) (Token id:Id.Lit_Chars val:'\tgit branch bisect &&\n' span_id:797) 
          (Token
            id: Id.Lit_Chars
            val: '\trev_hash6=$(git rev-parse --verify HEAD) &&\n'
            span_id: 798
          ) (Token id:Id.Lit_Chars val:'\ttest "$rev_hash6" = "$HASH6" &&\n' span_id:799) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect good > my_bisect_log.txt &&\n'
            span_id: 800
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH7 is the first bad commit" my_bisect_log.txt &&\n'
            span_id: 801
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:802) 
          (Token
            id: Id.Lit_Chars
            val: '\trev_hash6=$(git rev-parse --verify bisect) &&\n'
            span_id: 803
          ) (Token id:Id.Lit_Chars val:'\ttest "$rev_hash6" = "$HASH6" &&\n' span_id:804) 
          (Token id:Id.Lit_Chars val:'\tgit branch -D bisect\n' span_id:805)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'side branch creation' span_id:830))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:834) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:835) (Token id:Id.Lit_Chars val:'\tgit checkout -b side $HASH4 &&\n' span_id:836) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "5(side): first line on a side branch" hello2 &&\n'
            span_id: 837
          ) (Token id:Id.Lit_Chars val:'\tSIDE_HASH5=$(git rev-parse --verify HEAD) &&\n' span_id:838) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "6(side): second line on a side branch" hello2 &&\n'
            span_id: 839
          ) (Token id:Id.Lit_Chars val:'\tSIDE_HASH6=$(git rev-parse --verify HEAD) &&\n' span_id:840) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "7(side): third line on a side branch" hello2 &&\n'
            span_id: 841
          ) (Token id:Id.Lit_Chars val:'\tSIDE_HASH7=$(git rev-parse --verify HEAD)\n' span_id:842)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'good merge base when good and bad are siblings' span_id:849))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:853) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt &&\n'
            span_id: 854
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 855
          ) (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt &&\n' span_id:856) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect good > my_bisect_log.txt &&\n'
            span_id: 857
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail grep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 858
          ) (Token id:Id.Lit_Chars val:'\tgrep $HASH6 my_bisect_log.txt &&\n' span_id:859) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:860)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'skipped merge base when good and bad are siblings'
            span_id: 866
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:870) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start "$SIDE_HASH7" "$HASH7" > my_bisect_log.txt &&\n'
            span_id: 871
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 872
          ) (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt &&\n' span_id:873) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect skip > my_bisect_log.txt 2>&1 &&\n'
            span_id: 874
          ) (Token id:Id.Lit_Chars val:'\tgrep "warning" my_bisect_log.txt &&\n' span_id:875) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep $SIDE_HASH6 my_bisect_log.txt &&\n'
            span_id: 876
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:877)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bad merge base when good and bad are siblings' span_id:884))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:888) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start "$HASH7" HEAD > my_bisect_log.txt &&\n'
            span_id: 889
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 890
          ) (Token id:Id.Lit_Chars val:'\tgrep $HASH4 my_bisect_log.txt &&\n' span_id:891) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect bad > my_bisect_log.txt 2>&1 &&\n'
            span_id: 892
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base $HASH4 is bad" my_bisect_log.txt &&\n'
            span_id: 893
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_i18ngrep "fixed between $HASH4 and \\[$SIDE_HASH7\\]" my_bisect_log.txt &&\n'
            span_id: 894
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:895)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'many merge bases creation' span_id:944))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:948) 
          (Token id:Id.Lit_Chars val:'\tgit checkout "$SIDE_HASH5" &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\tgit merge -m "merge HASH5 and SIDE_HASH5" "$HASH5" &&\n' span_id:950) 
          (Token
            id: Id.Lit_Chars
            val: '\tA_HASH=$(git rev-parse --verify HEAD) &&\n'
            span_id: 951
          ) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:952) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge -m "merge HASH7 and SIDE_HASH7" "$HASH7" &&\n'
            span_id: 953
          ) (Token id:Id.Lit_Chars val:'\tB_HASH=$(git rev-parse --verify HEAD) &&\n' span_id:954) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-base --all "$A_HASH" "$B_HASH" > merge_bases.txt &&\n'
            span_id: 955
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 2 merge_bases.txt &&\n' span_id:956) 
          (Token id:Id.Lit_Chars val:'\tgrep "$HASH5" merge_bases.txt &&\n' span_id:957) (Token id:Id.Lit_Chars val:'\tgrep "$SIDE_HASH5" merge_bases.txt\n' span_id:958)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'good merge bases when good and bad are siblings' span_id:965))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start "$B_HASH" "$A_HASH" > my_bisect_log.txt &&\n'
            span_id: 970
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 971
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good > my_bisect_log2.txt &&\n' span_id:972) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log2.txt &&\n'
            span_id: 973
          ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:974) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:975) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\tgrep "$SIDE_HASH5" my_bisect_log.txt &&\n'
            span_id: 976
          ) (Token id:Id.Lit_Chars val:'\t\t\tgrep "$HASH5" my_bisect_log2.txt\n' span_id:977) 
          (Token id:Id.Lit_Chars val:'\t\t} || {\n' span_id:978) (Token id:Id.Lit_Chars val:'\t\t\tgrep "$SIDE_HASH5" my_bisect_log2.txt &&\n' span_id:979) 
          (Token id:Id.Lit_Chars val:'\t\t\tgrep "$HASH5" my_bisect_log.txt\n' span_id:980) (Token id:Id.Lit_Chars val:'\t\t}\n' span_id:981) (Token id:Id.Lit_Chars val:'\t} &&\n' span_id:982) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:983)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'optimized merge base checks' span_id:990))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:994) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start "$HASH7" "$SIDE_HASH7" > my_bisect_log.txt &&\n'
            span_id: 995
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log.txt &&\n'
            span_id: 996
          ) (Token id:Id.Lit_Chars val:'\tgrep "$HASH4" my_bisect_log.txt &&\n' span_id:997) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect good > my_bisect_log2.txt &&\n'
            span_id: 998
          ) (Token id:Id.Lit_Chars val:'\ttest -f ".git/BISECT_ANCESTORS_OK" &&\n' span_id:999) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$HASH6" = $(git rev-parse --verify HEAD) &&\n'
            span_id: 1000
          ) (Token id:Id.Lit_Chars val:'\tgit bisect bad > my_bisect_log3.txt &&\n' span_id:1001) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect good "$A_HASH" > my_bisect_log4.txt &&\n'
            span_id: 1002
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "merge base must be tested" my_bisect_log4.txt &&\n'
            span_id: 1003
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test -f ".git/BISECT_ANCESTORS_OK"\n' span_id:1004)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"parallel" side branch creation' span_id:1050))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1054) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1055) (Token id:Id.Lit_Chars val:'\tgit checkout -b parallel $HASH1 &&\n' span_id:1056) 
          (Token id:Id.Lit_Chars val:'\tmkdir dir1 dir2 &&\n' span_id:1057) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "1(para): line 1 on parallel branch" dir1/file1 &&\n'
            span_id: 1058
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH1=$(git rev-parse --verify HEAD) &&\n' span_id:1059) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "2(para): line 2 on parallel branch" dir2/file2 &&\n'
            span_id: 1060
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH2=$(git rev-parse --verify HEAD) &&\n' span_id:1061) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "3(para): line 3 on parallel branch" dir2/file3 &&\n'
            span_id: 1062
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH3=$(git rev-parse --verify HEAD) &&\n' span_id:1063) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge -m "merge HASH4 and PARA_HASH3" "$HASH4" &&\n'
            span_id: 1064
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH4=$(git rev-parse --verify HEAD) &&\n' span_id:1065) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "5(para): add line on parallel branch" dir1/file1 &&\n'
            span_id: 1066
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH5=$(git rev-parse --verify HEAD) &&\n' span_id:1067) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "6(para): add line on parallel branch" dir2/file2 &&\n'
            span_id: 1068
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH6=$(git rev-parse --verify HEAD) &&\n' span_id:1069) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge -m "merge HASH7 and PARA_HASH6" "$HASH7" &&\n'
            span_id: 1070
          ) (Token id:Id.Lit_Chars val:'\tPARA_HASH7=$(git rev-parse --verify HEAD)\n' span_id:1071)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'restricting bisection on one dir' span_id:1078))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1082) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1083) (Token id:Id.Lit_Chars val:'\tgit bisect start HEAD $HASH1 -- dir1 &&\n' span_id:1084) 
          (Token
            id: Id.Lit_Chars
            val: '\tpara1=$(git rev-parse --verify HEAD) &&\n'
            span_id: 1085
          ) (Token id:Id.Lit_Chars val:'\ttest "$para1" = "$PARA_HASH1" &&\n' span_id:1086) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect bad > my_bisect_log.txt &&\n'
            span_id: 1087
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$PARA_HASH1 is the first bad commit" my_bisect_log.txt\n'
            span_id: 1088
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'restricting bisection on one dir and a file' span_id:1095))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1099) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1100) (Token id:Id.Lit_Chars val:'\tgit bisect start HEAD $HASH1 -- dir1 hello &&\n' span_id:1101) 
          (Token
            id: Id.Lit_Chars
            val: '\tpara4=$(git rev-parse --verify HEAD) &&\n'
            span_id: 1102
          ) (Token id:Id.Lit_Chars val:'\ttest "$para4" = "$PARA_HASH4" &&\n' span_id:1103) 
          (Token id:Id.Lit_Chars val:'\tgit bisect bad &&\n' span_id:1104) (Token id:Id.Lit_Chars val:'\thash3=$(git rev-parse --verify HEAD) &&\n' span_id:1105) 
          (Token id:Id.Lit_Chars val:'\ttest "$hash3" = "$HASH3" &&\n' span_id:1106) (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:1107) 
          (Token
            id: Id.Lit_Chars
            val: '\thash4=$(git rev-parse --verify HEAD) &&\n'
            span_id: 1108
          ) (Token id:Id.Lit_Chars val:'\ttest "$hash4" = "$HASH4" &&\n' span_id:1109) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:1110) (Token id:Id.Lit_Chars val:'\tpara1=$(git rev-parse --verify HEAD) &&\n' span_id:1111) 
          (Token id:Id.Lit_Chars val:'\ttest "$para1" = "$PARA_HASH1" &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\tgit bisect good > my_bisect_log.txt &&\n' span_id:1113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$PARA_HASH4 is the first bad commit" my_bisect_log.txt\n'
            span_id: 1114
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'skipping away from skipped commit' span_id:1121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1125) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start $PARA_HASH7 $HASH1 &&\n'
            span_id: 1126
          ) (Token id:Id.Lit_Chars val:'\tpara4=$(git rev-parse --verify HEAD) &&\n' span_id:1127) 
          (Token id:Id.Lit_Chars val:'\ttest "$para4" = "$PARA_HASH4" &&\n' span_id:1128) (Token id:Id.Lit_Chars val:'        git bisect skip &&\n' span_id:1129) 
          (Token
            id: Id.Lit_Chars
            val: '\thash7=$(git rev-parse --verify HEAD) &&\n'
            span_id: 1130
          ) (Token id:Id.Lit_Chars val:'\ttest "$hash7" = "$HASH7" &&\n' span_id:1131) 
          (Token id:Id.Lit_Chars val:'        git bisect skip &&\n' span_id:1132) (Token id:Id.Lit_Chars val:'\tpara3=$(git rev-parse --verify HEAD) &&\n' span_id:1133) 
          (Token id:Id.Lit_Chars val:'\ttest "$para3" = "$PARA_HASH3"\n' span_id:1134)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'erroring out when using bad path parameters' span_id:1141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1145) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt &&\n'
            span_id: 1146
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "bad path parameters" error.txt\n' span_id:1147)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test bisection on bare repo - --no-checkout specified'
            span_id: 1154
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1158) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --bare . bare.nocheckout &&\n'
            span_id: 1159
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1160) 
          (Token id:Id.Lit_Chars val:'\t\tcd bare.nocheckout &&\n' span_id:1161) (Token id:Id.Lit_Chars val:'\t\tgit bisect start --no-checkout &&\n' span_id:1162) 
          (Token id:Id.Lit_Chars val:'\t\tgit bisect good $HASH1 &&\n' span_id:1163) (Token id:Id.Lit_Chars val:'\t\tgit bisect bad $HASH4 &&\n' span_id:1164) 
          (Token id:Id.Lit_Chars val:'\t\tgit bisect run eval \\\n' span_id:1165) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t"test \\$(git rev-list BISECT_HEAD ^$HASH2 --max-count=1 | wc -l) = 0" \\\n'
            span_id: 1166
          ) (Token id:Id.Lit_Chars val:'\t\t\t>../nocheckout.log\n' span_id:1167) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1168) (Token id:Id.Lit_Chars val:'\tgrep "$HASH3 is the first bad commit" nocheckout.log\n' span_id:1169)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test bisection on bare repo - --no-checkout defaulted'
            span_id: 1177
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1181) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --bare . bare.defaulted &&\n'
            span_id: 1182
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1183) 
          (Token id:Id.Lit_Chars val:'\t\tcd bare.defaulted &&\n' span_id:1184) (Token id:Id.Lit_Chars val:'\t\tgit bisect start &&\n' span_id:1185) 
          (Token id:Id.Lit_Chars val:'\t\tgit bisect good $HASH1 &&\n' span_id:1186) (Token id:Id.Lit_Chars val:'\t\tgit bisect bad $HASH4 &&\n' span_id:1187) 
          (Token id:Id.Lit_Chars val:'\t\tgit bisect run eval \\\n' span_id:1188) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\t"test \\$(git rev-list BISECT_HEAD ^$HASH2 --max-count=1 | wc -l) = 0" \\\n'
            span_id: 1189
          ) (Token id:Id.Lit_Chars val:'\t\t\t>../defaulted.log\n' span_id:1190) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1191) (Token id:Id.Lit_Chars val:'\tgrep "$HASH3 is the first bad commit" defaulted.log\n' span_id:1192)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'broken branch creation' span_id:1229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1233) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1234) (Token id:Id.Lit_Chars val:'\tgit checkout -b broken $HASH4 &&\n' span_id:1235) 
          (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH4 $HASH4 &&\n' span_id:1236) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "5(broken): first line on a broken branch" hello2 &&\n'
            span_id: 1237
          ) (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH5 &&\n' span_id:1238) 
          (Token id:Id.Lit_Chars val:'\tmkdir missing &&\n' span_id:1239) (Token id:Id.Lit_Chars val:'\t:> missing/MISSING &&\n' span_id:1240) 
          (Token id:Id.Lit_Chars val:'\tgit add missing/MISSING &&\n' span_id:1241) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "6(broken): Added file that will be deleted" &&\n'
            span_id: 1242
          ) (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH6 &&\n' span_id:1243) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "7(broken): second line on a broken branch" hello2 &&\n'
            span_id: 1244
          ) (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH7 &&\n' span_id:1245) 
          (Token
            id: Id.Lit_Chars
            val: '\tadd_line_into_file "8(broken): third line on a broken branch" hello2 &&\n'
            span_id: 1246
          ) (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH8 &&\n' span_id:1247) 
          (Token id:Id.Lit_Chars val:'\tgit rm missing/MISSING &&\n' span_id:1248) (Token id:Id.Lit_Chars val:'\tgit commit -m "9(broken): Remove missing file" &&\n' span_id:1249) 
          (Token id:Id.Lit_Chars val:'\tgit tag BROKEN_HASH9 &&\n' span_id:1250) 
          (Token
            id: Id.Lit_Chars
            val: '\trm .git/objects/39/f7e61a724187ab767d2e08442d9b6b9dab587d\n'
            span_id: 1251
          )
        )
      }
    )
    (command.Simple
      words: [{(echo)} {(DQ )}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1260)
          fd: -1
          arg_word: {(expected.ok)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1266)
          fd: -1
          arg_word: {(expected.missing-tree.default)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1270)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1275
          stdin_parts: [('fatal: unable to read tree 39f7e61a724187ab767d2e08442d9b6b9dab587d\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect fails if tree is broken on start commit' span_id:1280))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1284) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1285) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start BROKEN_HASH7 BROKEN_HASH4 2>error.txt &&\n'
            span_id: 1286
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.missing-tree.default error.txt\n' span_id:1287)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect fails if tree is broken on trial commit' span_id:1294))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1298) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1299) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start BROKEN_HASH9 BROKEN_HASH4 2>error.txt &&\n'
            span_id: 1300
          ) (Token id:Id.Lit_Chars val:'\tgit reset --hard broken &&\n' span_id:1301) 
          (Token id:Id.Lit_Chars val:'\tgit checkout broken &&\n' span_id:1302) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.missing-tree.default error.txt\n' span_id:1303)
        )
      }
    )
    (command.ShFunction
      name: check_same
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(echo)} 
                  {
                    (DQ ('Checking ') ($ Id.VSub_Number '$1') (' is the same as ') 
                      ($ Id.VSub_Number '$2')
                    )
                  }
                )
                (C {(test_cmp_rev)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect: --no-checkout - start commit bad' span_id:1342))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1346) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1347) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start BROKEN_HASH7 BROKEN_HASH4 --no-checkout &&\n'
            span_id: 1348
          ) (Token id:Id.Lit_Chars val:'\tcheck_same BROKEN_HASH6 BISECT_HEAD &&\n' span_id:1349) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1350)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect: --no-checkout - trial commit bad' span_id:1357))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1361) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1362) (Token id:Id.Lit_Chars val:'\tgit bisect start broken BROKEN_HASH4 --no-checkout &&\n' span_id:1363) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH6 BISECT_HEAD &&\n'
            span_id: 1364
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1365)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect: --no-checkout - target before breakage' span_id:1372))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1376) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1377) (Token id:Id.Lit_Chars val:'\tgit bisect start broken BROKEN_HASH4 --no-checkout &&\n' span_id:1378) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH6 BISECT_HEAD &&\n'
            span_id: 1379
          ) (Token id:Id.Lit_Chars val:'\tgit bisect bad BISECT_HEAD &&\n' span_id:1380) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH5 BISECT_HEAD &&\n'
            span_id: 1381
          ) (Token id:Id.Lit_Chars val:'\tgit bisect bad BISECT_HEAD &&\n' span_id:1382) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH5 bisect/bad &&\n'
            span_id: 1383
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1384)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect: --no-checkout - target in breakage' span_id:1391))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1395) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1396) (Token id:Id.Lit_Chars val:'\tgit bisect start broken BROKEN_HASH4 --no-checkout &&\n' span_id:1397) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH6 BISECT_HEAD &&\n'
            span_id: 1398
          ) (Token id:Id.Lit_Chars val:'\tgit bisect bad BISECT_HEAD &&\n' span_id:1399) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH5 BISECT_HEAD &&\n'
            span_id: 1400
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good BISECT_HEAD &&\n' span_id:1401) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH6 bisect/bad &&\n'
            span_id: 1402
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1403)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect: --no-checkout - target after breakage' span_id:1410))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1414) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1415) (Token id:Id.Lit_Chars val:'\tgit bisect start broken BROKEN_HASH4 --no-checkout &&\n' span_id:1416) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH6 BISECT_HEAD &&\n'
            span_id: 1417
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good BISECT_HEAD &&\n' span_id:1418) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH8 BISECT_HEAD &&\n'
            span_id: 1419
          ) (Token id:Id.Lit_Chars val:'\tgit bisect good BISECT_HEAD &&\n' span_id:1420) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_same BROKEN_HASH9 bisect/bad &&\n'
            span_id: 1421
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1422)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect: demonstrate identification of damage boundary'
            span_id: 1429
          )
        )
      } 
      {
        (DQ ('\n') ('\tgit bisect reset &&\n') ('\tgit checkout broken &&\n') 
          ('\tgit bisect start broken master --no-checkout &&\n') ('\tgit bisect run ') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1438)
          ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1439)) (SHELL_PATH) 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1441)
          ) (" -c '\n") ('\t\tGOOD=') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1444)
          ) ('(git for-each-ref ') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1446)
          ) ('--format=%(objectname)') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1448)
          ) (' refs/bisect/good-*) &&\n') ('\t\tgit rev-list --objects BISECT_HEAD --not ') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1451)
          ) ('GOOD >tmp.') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1453)) 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1454)
          ) (' &&\n') ('\t\tgit pack-objects --stdout >/dev/null < tmp.') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1457)
          ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1458)) ('\n') 
          ('\t\trc=') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1461)) ('?\n') 
          ('\t\trm -f tmp.') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1464)) 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1465)
          ) ('\n') ('\t\ttest ') 
          (word_part.EscapedLiteral
            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1468)
          ) ("rc = 0' &&\n") ('\tcheck_same BROKEN_HASH6 bisect/bad &&\n') ('\tgit bisect reset\n')
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1477)
          fd: -1
          arg_word: {(expected.bisect-log)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1481)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1491
          stdin_parts: [
            (
'# bad: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.\n'
            )
            (
'# good: [7b7f204a749c3125d5224ed61ea2ae1187ad046f] Add <2: A new day for git> into <hello>.\n'
            )
            (
"git bisect start '32a594a3fdac2d57cf6d02987e30eec68511498c' '7b7f204a749c3125d5224ed61ea2ae1187ad046f'\n"
            )
            (
'# good: [3de952f2416b6084f557ec417709eac740c6818c] Add <3: Another new day for git> into <hello>.\n'
            )
            ('git bisect good 3de952f2416b6084f557ec417709eac740c6818c\n')
            (
'# first bad commit: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect log: successful result' span_id:1496))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1500) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1501) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH4 $HASH2 &&\n' span_id:1502) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good &&\n' span_id:1503) (Token id:Id.Lit_Chars val:'\tgit bisect log >bisect-log.txt &&\n' span_id:1504) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected.bisect-log bisect-log.txt &&\n'
            span_id: 1505
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1506)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1512)
          fd: -1
          arg_word: {(expected.bisect-skip-log)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1516)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1528
          stdin_parts: [
            (
'# bad: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.\n'
            )
            (
'# good: [7b7f204a749c3125d5224ed61ea2ae1187ad046f] Add <2: A new day for git> into <hello>.\n'
            )
            (
"git bisect start '32a594a3fdac2d57cf6d02987e30eec68511498c' '7b7f204a749c3125d5224ed61ea2ae1187ad046f'\n"
            )
            (
'# skip: [3de952f2416b6084f557ec417709eac740c6818c] Add <3: Another new day for git> into <hello>.\n'
            )
            ('git bisect skip 3de952f2416b6084f557ec417709eac740c6818c\n')
            ('# only skipped commits left to test\n')
            (
'# possible first bad commit: [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.\n'
            )
            (
'# possible first bad commit: [3de952f2416b6084f557ec417709eac740c6818c] Add <3: Another new day for git> into <hello>.\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect log: only skip commits left' span_id:1533))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1537) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1538) (Token id:Id.Lit_Chars val:'\tgit bisect start $HASH4 $HASH2 &&\n' span_id:1539) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect skip &&\n' span_id:1540) (Token id:Id.Lit_Chars val:'\tgit bisect log >bisect-skip-log.txt &&\n' span_id:1541) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected.bisect-skip-log bisect-skip-log.txt &&\n'
            span_id: 1542
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1543)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '"git bisect bad HEAD" behaves as "git bisect bad"'
            span_id: 1550
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1554) 
          (Token id:Id.Lit_Chars val:'\tgit checkout parallel &&\n' span_id:1555) (Token id:Id.Lit_Chars val:'\tgit bisect start HEAD $HASH1 &&\n' span_id:1556) 
          (Token id:Id.Lit_Chars val:'\tgit bisect good HEAD &&\n' span_id:1557) (Token id:Id.Lit_Chars val:'\tgit bisect bad HEAD &&\n' span_id:1558) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$HASH6" = $(git rev-parse --verify HEAD) &&\n'
            span_id: 1559
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1560)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect starts with only one new' span_id:1567))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1571) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1572) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:1573) 
          (Token id:Id.Lit_Chars val:'\tgit bisect new $HASH4 &&\n' span_id:1574) (Token id:Id.Lit_Chars val:'\tgit bisect next\n' span_id:1575)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect does not start with only one old' span_id:1582))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1586) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1587) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:1588) 
          (Token id:Id.Lit_Chars val:'\tgit bisect old $HASH1 &&\n' span_id:1589) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect next\n' span_id:1590)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start with one new and old' span_id:1597))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1601) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1602) (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:1603) 
          (Token id:Id.Lit_Chars val:'\tgit bisect old $HASH1 &&\n' span_id:1604) (Token id:Id.Lit_Chars val:'\tgit bisect new $HASH4 &&\n' span_id:1605) 
          (Token id:Id.Lit_Chars val:'\tgit bisect new &&\n' span_id:1606) (Token id:Id.Lit_Chars val:'\tgit bisect new >bisect_result &&\n' span_id:1607) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH2 is the first new commit" bisect_result &&\n'
            span_id: 1608
          ) (Token id:Id.Lit_Chars val:'\tgit bisect log >log_to_replay.txt &&\n' span_id:1609) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1610)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect replay with old and new' span_id:1617))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1621) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect replay log_to_replay.txt >bisect_result &&\n'
            span_id: 1622
          ) (Token id:Id.Lit_Chars val:'\tgrep "$HASH2 is the first new commit" bisect_result &&\n' span_id:1623) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1624)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect cannot mix old/new and good/bad' span_id:1631))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1635) 
          (Token id:Id.Lit_Chars val:'\tgit bisect start &&\n' span_id:1636) (Token id:Id.Lit_Chars val:'\tgit bisect bad $HASH4 &&\n' span_id:1637) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect old $HASH1\n'
            span_id: 1638
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect terms needs 0 or 1 argument' span_id:1645))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1649) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1650) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect terms only-one &&\n' span_id:1651) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect terms 1 2 &&\n'
            span_id: 1652
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect terms 2>actual &&\n' span_id:1653) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "no terms defined" >expected &&\n'
            span_id: 1654
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected actual\n' span_id:1655)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect terms shows good/bad after start' span_id:1662))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1666) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1667) (Token id:Id.Lit_Chars val:'\tgit bisect start HEAD $HASH1 &&\n' span_id:1668) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect terms --term-good >actual &&\n'
            span_id: 1669
          ) (Token id:Id.Lit_Chars val:'\techo good >expected &&\n' span_id:1670) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1671) (Token id:Id.Lit_Chars val:'\tgit bisect terms --term-bad >actual &&\n' span_id:1672) 
          (Token id:Id.Lit_Chars val:'\techo bad >expected &&\n' span_id:1673) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1674)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start with one term1 and term2' span_id:1681))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1685) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1686) (Token id:Id.Lit_Chars val:'\tgit bisect start --term-old term2 --term-new term1 &&\n' span_id:1687) 
          (Token id:Id.Lit_Chars val:'\tgit bisect term2 $HASH1 &&\n' span_id:1688) (Token id:Id.Lit_Chars val:'\tgit bisect term1 $HASH4 &&\n' span_id:1689) 
          (Token id:Id.Lit_Chars val:'\tgit bisect term1 &&\n' span_id:1690) (Token id:Id.Lit_Chars val:'\tgit bisect term1 >bisect_result &&\n' span_id:1691) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH2 is the first term1 commit" bisect_result &&\n'
            span_id: 1692
          ) (Token id:Id.Lit_Chars val:'\tgit bisect log >log_to_replay.txt &&\n' span_id:1693) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1694)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect replay with term1 and term2' span_id:1701))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1705) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect replay log_to_replay.txt >bisect_result &&\n'
            span_id: 1706
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH2 is the first term1 commit" bisect_result &&\n'
            span_id: 1707
          ) (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1708)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start term1 term2' span_id:1715))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1719) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1720) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start --term-new term1 --term-old term2 $HASH4 $HASH1 &&\n'
            span_id: 1721
          ) (Token id:Id.Lit_Chars val:'\tgit bisect term1 &&\n' span_id:1722) 
          (Token id:Id.Lit_Chars val:'\tgit bisect term1 >bisect_result &&\n' span_id:1723) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep "$HASH2 is the first term1 commit" bisect_result &&\n'
            span_id: 1724
          ) (Token id:Id.Lit_Chars val:'\tgit bisect log >log_to_replay.txt &&\n' span_id:1725) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset\n' span_id:1726)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'bisect cannot mix terms' span_id:1733))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1737) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1738) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect start --term-good term1 --term-bad term2 $HASH4 $HASH1 &&\n'
            span_id: 1739
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect a &&\n' span_id:1740) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect b &&\n' span_id:1741) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect bad &&\n' span_id:1742) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect good &&\n' span_id:1743) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect new &&\n' span_id:1744) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect old\n' span_id:1745)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect terms rejects invalid terms' span_id:1752))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1756) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1757) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect start --term-good invalid..term &&\n'
            span_id: 1758
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect terms --term-bad invalid..term &&\n'
            span_id: 1759
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect terms --term-good bad &&\n' span_id:1760) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect terms --term-good old &&\n'
            span_id: 1761
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git bisect terms --term-good skip &&\n' span_id:1762) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git bisect terms --term-good reset &&\n'
            span_id: 1763
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/BISECT_TERMS\n' span_id:1764)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'bisect start --term-* does store terms' span_id:1771))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1775) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1776) (Token id:Id.Lit_Chars val:'\tgit bisect start --term-bad=one --term-good=two &&\n' span_id:1777) 
          (Token id:Id.Lit_Chars val:'\tgit bisect terms >actual &&\n' span_id:1778) (Token id:Id.Lit_Chars val:'\tcat <<-EOF >expected &&\n' span_id:1779) 
          (Token
            id: Id.Lit_Chars
            val: '\tYour current terms are two for the old state\n'
            span_id: 1780
          ) (Token id:Id.Lit_Chars val:'\tand one for the new state.\n' span_id:1781) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1782) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected actual &&\n' span_id:1783) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit bisect terms --term-bad >actual &&\n'
            span_id: 1784
          ) (Token id:Id.Lit_Chars val:'\techo one >expected &&\n' span_id:1785) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1786) (Token id:Id.Lit_Chars val:'\tgit bisect terms --term-good >actual &&\n' span_id:1787) 
          (Token id:Id.Lit_Chars val:'\techo two >expected &&\n' span_id:1788) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1789)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'bisect start takes options and revs in any order'
            span_id: 1796
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1800) 
          (Token id:Id.Lit_Chars val:'\tgit bisect reset &&\n' span_id:1801) (Token id:Id.Lit_Chars val:'\tgit bisect start --term-good one $HASH4 \\\n' span_id:1802) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--term-good two --term-bad bad-term \\\n'
            span_id: 1803
          ) (Token id:Id.Lit_Chars val:'\t\t$HASH1 --term-good three -- &&\n' span_id:1804) 
          (Token
            id: Id.Lit_Chars
            val: '\t(git bisect terms --term-bad && git bisect terms --term-good) >actual &&\n'
            span_id: 1805
          ) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n%s\\n" bad-term three >expected &&\n' span_id:1806) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1807)
        )
      }
    )
    (C {(test_done)})
  ]
)