(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: 'git rev-list trivial path optimization test\n'
                  span_id: 6
                ) (Token id:Id.Lit_Chars val:'\n' span_id:7) (Token id:Id.Lit_Chars val:'   d/z1\n' span_id:8) 
                (Token
                  id: Id.Lit_Chars
                  val: '   b0                             b1\n'
                  span_id: 9
                ) (Token id:Id.Lit_Chars val:'   o------------------------*----o master\n' span_id:10) 
                (Token
                  id: Id.Lit_Chars
                  val: '  /                        /\n'
                  span_id: 11
                ) (Token id:Id.Lit_Chars val:' o---------o----o----o----o side\n' span_id:12) 
                (Token
                  id: Id.Lit_Chars
                  val: ' a0        c0   c1   a1   c2\n'
                  span_id: 13
                ) (Token id:Id.Lit_Chars val:' d/f0      d/f1\n' span_id:14) 
                (Token id:Id.Lit_Chars val:' d/z0\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16)
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\techo Hello >a &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tmkdir d &&\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\techo World >d/f &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\techo World >d/z &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\tgit add a d &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial commit" &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify HEAD &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\tgit tag initial\n' span_id:39)
        )
      }
    )
    (C {(test_expect_success)} {(path-optimization)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\tcommit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-list $commit | wc -l) = 2 &&\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-list $commit -- . | wc -l) = 1\n'
            span_id: 52
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'further setup' span_id:59))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b side &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo Irrelevant >c &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\techo Irrelevant >d/f &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit add c d/f &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit commit -m "Side makes an irrelevant commit" &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tgit tag side_c0 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\techo "More Irrelevancy" >c &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Side makes another irrelevant commit" &&\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\techo Bye >a &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "Side touches a" &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit tag side_a1 &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\techo "Yet more Irrelevancy" >c &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:82) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Side makes yet another irrelevant commit" &&\n'
            span_id: 83
          ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\techo Another >b &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\techo Munged >d/z &&\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\tgit add b d/z &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "Master touches b" &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit tag master_b0 &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\tgit merge side &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\techo Touched >b &&\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\tgit add b &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Master touches b again"\n'
            span_id: 95
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path optimization 2' span_id:102))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse side_a1 initial >expected &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- a >actual &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:109)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pathspec with leading path' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n'
            span_id: 121
          ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- d >actual &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:123)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pathspec with glob (1)' span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n'
            span_id: 135
          ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- "d/*" >actual &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:137)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pathspec with glob (2)' span_id:144))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse side_c0 initial >expected &&\n'
            span_id: 149
          ) (Token id:Id.Lit_Chars val:'\tgit rev-list HEAD -- "d/[a-m]*" >actual &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:151)
        )
      }
    )
    (C {(test_done)})
  ]
)