(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 -p should respect --onto\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'In a rebase with --onto, we should rewrite all the commits that\n'
                  span_id: 17
                ) (Token id:Id.Lit_Chars val:aren span_id:18)
              ) (DQ ("'")) 
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: 't on top of $ONTO, even if they are on top of $UPSTREAM.\n'
                  span_id: 24
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-rebase.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:59))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\ttest_commit A1 &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttest_commit B1 &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\ttest_commit C1 &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\ttest_commit D1 &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard B1 &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\ttest_commit E1 &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\ttest_commit F1 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\ttest_merge G1 D1 &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard A1 &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\ttest_commit H1\n' span_id:73)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase from B1 onto H1' span_id:105))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tgit checkout G1 &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit rebase -p --onto H1 B1 &&\n' span_id:111) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git rev-parse HEAD^1^1^1)" = "$(git rev-parse H1)" &&\n'
            span_id: 112
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git rev-parse HEAD^2^1^1)" = "$(git rev-parse H1)"\n'
            span_id: 113
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase from E1 onto H1' span_id:142))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\tgit checkout G1 &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\tgit rebase -p --onto H1 E1 &&\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git rev-parse HEAD^1^1)" = "$(git rev-parse H1)" &&\n'
            span_id: 149
          ) (Token id:Id.Lit_Chars val:'\ttest "$(git rev-parse HEAD^2)" = "$(git rev-parse D1)"\n' span_id:150)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebase from C1 onto H1' span_id:176))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\tgit checkout G1 &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\tgit rev-list --first-parent --pretty=oneline C1..G1 &&\n' span_id:182) 
          (Token id:Id.Lit_Chars val:'\tgit rebase -p --onto H1 C1 &&\n' span_id:183) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git rev-parse HEAD^2^1)" = "$(git rev-parse H1)" &&\n'
            span_id: 184
          ) (Token id:Id.Lit_Chars val:'\ttest "$(git rev-parse HEAD^1)" = "$(git rev-parse F1)"\n' span_id:185)
        )
      }
    )
    (C {(test_done)})
  ]
)