(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"test @{-N} syntax">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (FuncDef
      name: make_commit
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(echo)} {(DQ ($ VSub_Number "$1"))}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(DQ ($ VSub_Number "$1"))}
                      spids: [30]
                    )
                  ]
                )
                (AndOr
                  children: [
                    (C {(git)} {(add)} {(DQ ($ VSub_Number "$1"))})
                    (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number "$1"))})
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [21]
        )
      spids: [16 20]
    )
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\n"> <"\tmake_commit 1 &&\n"> <"\tgit branch side &&\n"> <"\tmake_commit 2 &&\n"> 
          <"\tmake_commit 3 &&\n"> <"\tgit checkout side &&\n"> <"\tmake_commit 4 &&\n"> <"\tgit merge master &&\n"> 
          <"\tgit checkout master\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"@{-1} works">)} {(SQ <"\n"> <"\ttest_cmp_rev side @{-1}\n">)})
    (C {(test_expect_success)} {(SQ <"@{-1}~2 works">)} {(SQ <"\n"> <"\ttest_cmp_rev side~2 @{-1}~2\n">)})
    (C {(test_expect_success)} {(SQ <"@{-1}^2 works">)} {(SQ <"\n"> <"\ttest_cmp_rev side^2 @{-1}^2\n">)})
    (C {(test_expect_success)} {(SQ <"@{-1}@{1} works">)} 
      {(SQ <"\n"> <"\ttest_cmp_rev side@{1} @{-1}@{1}\n">)}
    )
    (C {(test_expect_success)} {(SQ <"@{-2} works">)} {(SQ <"\n"> <"\ttest_cmp_rev master @{-2}\n">)})
    (C {(test_expect_success)} {(SQ <"@{-3} fails">)} 
      {(SQ <"\n"> <"\ttest_must_fail git rev-parse @{-3}\n">)}
    )
    (C {(test_done)})
  ]
)