(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:'messages from rebase operation' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\ttest_commit O fileO &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttest_commit X fileX &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\ttest_commit A fileA &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\ttest_commit B fileB &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\ttest_commit Y fileY &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b topic O &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit cherry-pick A B &&\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\ttest_commit Z fileZ &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit tag start\n' span_id:32)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:38) fd:-1 arg_word:{(expect)})
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:41)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:42)) (OF)}
          here_end_span_id: 48
          stdin_parts: [
            ('Already applied: 0001 A\n')
            ('Already applied: 0002 B\n')
            ('Committed: 0003 Z\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase -m' span_id:53))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\tgit rebase -m master >report &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\tsed -n -e "/^Already applied: /p" \\\n' span_id:59) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t-e "/^Committed: /p" report >actual &&\n'
            span_id: 60
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:61)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase against master twice' span_id:68))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\tgit rebase master >out &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "Current branch topic is up to date" out\n' span_id:74)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase against master twice with --force' span_id:81))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:85) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rebase --force-rebase master >out &&\n'
            span_id: 86
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "Current branch topic is up to date, rebase forced" out\n'
            span_id: 87
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase against master twice from another branch' span_id:94))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\tgit checkout topic^ &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\tgit rebase master topic >out &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "Current branch topic is up to date" out\n'
            span_id: 101
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase fast-forward to master' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\tgit checkout topic^ &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\tgit rebase topic >out &&\n' span_id:114) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "Fast-forwarded HEAD to topic" out\n'
            span_id: 115
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase --stat' span_id:122))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard start &&\n' span_id:127) (Token id:Id.Lit_Chars val:'        git rebase --stat master >diffstat.txt &&\n' span_id:128) 
          (Token
            id: Id.Lit_Chars
            val: '        grep "^ fileX |  *1 +$" diffstat.txt\n'
            span_id: 129
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase w/config rebase.stat' span_id:136))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard start &&\n' span_id:141) (Token id:Id.Lit_Chars val:'        git config rebase.stat true &&\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '        git rebase master >diffstat.txt &&\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'        grep "^ fileX |  *1 +$" diffstat.txt\n' span_id:144)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase -n overrides config rebase.stat config' span_id:151))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard start &&\n' span_id:156) (Token id:Id.Lit_Chars val:'        git config rebase.stat true &&\n' span_id:157) 
          (Token
            id: Id.Lit_Chars
            val: '        git rebase -n master >diffstat.txt &&\n'
            span_id: 158
          ) (Token id:Id.Lit_Chars val:'        ! grep "^ fileX |  *1 +$" diffstat.txt\n' span_id:159)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase --onto outputs the invalid ref' span_id:187))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err &&\n'
            span_id: 192
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "invalid-ref" err\n' span_id:193)
        )
      }
    )
    (C {(test_done)})
  ]
)