(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 branch display tests' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make commits' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\techo content >file &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\techo content >>file &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m two\n' span_id:26)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make branches' span_id:33))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tgit branch branch-one &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit branch branch-two HEAD^\n' span_id:39)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'make remote branches' span_id:46))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/remotes/origin/branch-one branch-one &&\n'
            span_id: 51
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/remotes/origin/branch-two branch-two &&\n'
            span_id: 52
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/branch-one\n'
            span_id: 53
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:59) fd:-1 arg_word:{(expect)})
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:62)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:64))}
          here_end_span_id: 70
          stdin_parts: [('  branch-one\n') ('  branch-two\n') ('* master\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch shows local branches' span_id:74))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:80)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch --list shows local branches' span_id:87))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit branch --list >actual &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:93)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:99) fd:-1 arg_word:{(expect)})
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:102)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:104))}
          here_end_span_id: 109
          stdin_parts: [('  branch-one\n') ('  branch-two\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch --list pattern shows matching local branches'
            span_id: 113
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:117) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit branch --list branch* >actual &&\n'
            span_id: 118
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:119)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:125)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:128)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:130))}
          here_end_span_id: 136
          stdin_parts: [
            ('  origin/HEAD -> origin/branch-one\n')
            ('  origin/branch-one\n')
            ('  origin/branch-two\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch -r shows remote branches' span_id:140))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\tgit branch -r >actual &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:146)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:152)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:155)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:157))}
          here_end_span_id: 166
          stdin_parts: [
            ('  branch-one\n')
            ('  branch-two\n')
            ('* master\n')
            ('  remotes/origin/HEAD -> origin/branch-one\n')
            ('  remotes/origin/branch-one\n')
            ('  remotes/origin/branch-two\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch -a shows local and remote branches' span_id:170))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\tgit branch -a >actual &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:176)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:182)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:185)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:187))}
          here_end_span_id: 193
          stdin_parts: [('two\n') ('one\n') ('two\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch -v shows branch summaries' span_id:197))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\tgit branch -v >tmp &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\tawk "{print \\$NF}" <tmp >actual &&\n' span_id:203) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:204)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:210)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:213)
          fd: -1
          here_begin: {(SQ (Token id:Id.Lit_Chars val:EOF span_id:215))}
          here_end_span_id: 220
          stdin_parts: [('two\n') ('one\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch --list -v pattern shows branch summaries'
            span_id: 224
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit branch --list -v branch* >tmp &&\n'
            span_id: 229
          ) (Token id:Id.Lit_Chars val:'\tawk "{print \\$NF}" <tmp >actual &&\n' span_id:230) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:231)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch -v pattern does not show branch summaries'
            span_id: 238
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git branch -v branch*\n'
            span_id: 243
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch shows detached HEAD properly' span_id:250))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:255) (Token id:Id.Lit_Chars val:'* (HEAD detached at $(git rev-parse --short HEAD^0))\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'  branch-one\n' span_id:257) (Token id:Id.Lit_Chars val:'  branch-two\n' span_id:258) 
          (Token id:Id.Lit_Chars val:'  master\n' span_id:259) (Token id:Id.Lit_Chars val:'EOF\n' span_id:260) 
          (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^0 &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:263)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch shows detached HEAD properly after checkout --detach'
            span_id: 270
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:276) 
          (Token
            id: Id.Lit_Chars
            val: '* (HEAD detached at $(git rev-parse --short HEAD^0))\n'
            span_id: 277
          ) (Token id:Id.Lit_Chars val:'  branch-one\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'  branch-two\n' span_id:279) (Token id:Id.Lit_Chars val:'  master\n' span_id:280) (Token id:Id.Lit_Chars val:'EOF\n' span_id:281) 
          (Token id:Id.Lit_Chars val:'\tgit checkout --detach &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:283) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:284)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch shows detached HEAD properly after moving'
            span_id: 291
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:295) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:296) (Token id:Id.Lit_Chars val:'* (HEAD detached from $(git rev-parse --short HEAD))\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'  branch-one\n' span_id:298) (Token id:Id.Lit_Chars val:'  branch-two\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'  master\n' span_id:300) (Token id:Id.Lit_Chars val:'EOF\n' span_id:301) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^1 &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:303) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:304)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch shows detached HEAD properly from tag'
            span_id: 311
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:315) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:316) (Token id:Id.Lit_Chars val:'* (HEAD detached at fromtag)\n' span_id:317) 
          (Token id:Id.Lit_Chars val:'  branch-one\n' span_id:318) (Token id:Id.Lit_Chars val:'  branch-two\n' span_id:319) 
          (Token id:Id.Lit_Chars val:'  master\n' span_id:320) (Token id:Id.Lit_Chars val:'EOF\n' span_id:321) 
          (Token id:Id.Lit_Chars val:'\tgit tag fromtag master &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tgit checkout fromtag &&\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:325)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git branch shows detached HEAD properly after moving from tag'
            span_id: 332
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:336) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:337) (Token id:Id.Lit_Chars val:'* (HEAD detached from fromtag)\n' span_id:338) 
          (Token id:Id.Lit_Chars val:'  branch-one\n' span_id:339) (Token id:Id.Lit_Chars val:'  branch-two\n' span_id:340) 
          (Token id:Id.Lit_Chars val:'  master\n' span_id:341) (Token id:Id.Lit_Chars val:'EOF\n' span_id:342) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^1 &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit branch >actual &&\n' span_id:344) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:345)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch `--sort` option' span_id:352))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\t* (HEAD detached from fromtag)\n' span_id:358) 
          (Token id:Id.Lit_Chars val:'\t  branch-two\n' span_id:359) (Token id:Id.Lit_Chars val:'\t  branch-one\n' span_id:360) 
          (Token id:Id.Lit_Chars val:'\t  master\n' span_id:361) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:362) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit branch --sort=objectsize >actual &&\n'
            span_id: 363
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual\n' span_id:364)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git branch --points-at option' span_id:371))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:375) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\t  branch-one\n' span_id:377) 
          (Token id:Id.Lit_Chars val:'\t  master\n' span_id:378) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:379) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit branch --points-at=branch-one >actual &&\n'
            span_id: 380
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:381)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ambiguous branch/tag not marked' span_id:388))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:392) 
          (Token id:Id.Lit_Chars val:'\tgit tag ambiguous &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tgit branch ambiguous &&\n' span_id:394) 
          (Token id:Id.Lit_Chars val:'\techo "  ambiguous" >expect &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\tgit branch --list ambiguous >actual &&\n' span_id:396) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:397)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'local-branch symrefs shortened properly' span_id:404))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:408) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit symbolic-ref refs/heads/ref-to-branch refs/heads/branch-one &&\n'
            span_id: 409
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit symbolic-ref refs/heads/ref-to-remote refs/remotes/origin/branch-one &&\n'
            span_id: 410
          ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:411) 
          (Token id:Id.Lit_Chars val:'\t  ref-to-branch -> branch-one\n' span_id:412) (Token id:Id.Lit_Chars val:'\t  ref-to-remote -> refs/remotes/origin/branch-one\n' span_id:413) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:414) (Token id:Id.Lit_Chars val:'\tgit branch >actual.raw &&\n' span_id:415) 
          (Token id:Id.Lit_Chars val:'\tgrep ref-to <actual.raw >actual &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:417)
        )
      }
    )
    (C {(test_done)})
  ]
)