(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)})
  ]
)