(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:'Peter MacMillan' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) 
          (Token id:Id.Lit_Chars val:'\techo Hello >file &&\n' span_id:20) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit commit -m V1 &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\techo Hello world >file &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b other\n' span_id:26)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check all changes are staged' span_id:33))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tgit diff --exit-code\n' span_id:38)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'second commit' span_id:45))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m V2\n' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:check span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\tgit diff --cached --exit-code\n' span_id:62)
        )
      }
    )
    (C {(test_done)})
  ]
)