(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 checkout to switch between branches with symlink<->dir'
                  span_id: 12
                )
              )
            }
          spids: [10]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:26) (Token id:Id.Lit_Chars val:'\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tmkdir frotz &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo hello >frotz/filfre &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit add frotz/filfre &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "master has file frotz/filfre" &&\n'
            span_id: 32
          ) (Token id:Id.Lit_Chars val:'\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\techo goodbye >nitfol &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit add nitfol &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit commit -m "master adds file nitfol" &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit rm --cached frotz/filfre &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\tmv frotz xyzzy &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add xyzzy frotz &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tgit add xyzzy/filfre &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:47) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/"\n'
            span_id: 48
          ) (Token id:Id.Lit_Chars val:'\n' span_id:49)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'switch from symlink to dir' span_id:56))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:60) (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Remove temporary directories & switch to master' span_id:70))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\trm -fr frotz xyzzy nitfol &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit checkout -f master\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'switch from dir to symlink' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\tgit checkout side\n' span_id:89) (Token id:Id.Lit_Chars val:'\n' span_id:90)
        )
      }
    )
    (C {(test_done)})
  ]
)