(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 rebase --merge --skip tests' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\techo hello > hello &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit add hello &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "hello" &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit branch skip-reference &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\techo world >> hello &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "hello world" &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\techo goodbye >> hello &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "goodbye" &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f skip-reference &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\techo moo > hello &&\n' span_id:48) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -a -m "we should skip this" &&\n'
            span_id: 49
          ) (Token id:Id.Lit_Chars val:'\techo moo > cow &&\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\tgit add cow &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\tgit commit -m "this should not be skipped" &&\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit branch pre-rebase skip-reference &&\n'
            span_id: 53
          ) (Token id:Id.Lit_Chars val:'\tgit branch skip-merge skip-reference\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\t' span_id:55)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase with git am -3 (default)' span_id:62))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase master\n' span_id:67)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase --skip can not be used with other options' span_id:74))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rebase -v --skip &&\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase --skip -v\n' span_id:80)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase --skip with am -3' span_id:87))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit rebase --skip\n' span_id:92) (Token id:Id.Lit_Chars val:'\t' span_id:93)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase moves back to skip-reference' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest refs/heads/skip-reference = $(git symbolic-ref HEAD) &&\n'
            span_id: 105
          ) (Token id:Id.Lit_Chars val:'\tgit branch post-rebase &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard pre-rebase &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase master &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\techo "hello" > hello &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\tgit add hello &&\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\tgit rebase --continue &&\n' span_id:111) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest refs/heads/skip-reference = $(git symbolic-ref HEAD) &&\n'
            span_id: 112
          ) (Token id:Id.Lit_Chars val:'\tgit reset --hard post-rebase\n' span_id:113)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout skip-merge' span_id:120))} 
      {(SQ (Token id:Id.Lit_Chars val:'git checkout -f skip-merge' span_id:124))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase with --merge' span_id:131))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rebase --merge master\n'
            span_id: 136
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase --skip with --merge' span_id:143))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\tgit rebase --skip\n' span_id:148)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge and reference trees equal' span_id:155))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest -z "$(git diff-tree skip-merge skip-reference)"\n'
            span_id: 160
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'moved back to branch correctly' span_id:167))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest refs/heads/skip-merge = $(git symbolic-ref HEAD)\n'
            span_id: 172
          )
        )
      }
    )
    (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'gitk --all & sleep 1' span_id:179))})
    (C {(test_done)})
  ]
)