(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: 'checkout switching away from an invalid branch'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\techo hello >world &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add world &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial\n' span_id:25)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'checkout should not start branch from a tree' span_id:32))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:36) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git checkout -b newbranch master^{tree}\n'
            span_id: 37
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'checkout master from invalid HEAD' span_id:44))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\techo $_z40 >.git/HEAD &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit checkout master --\n' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'checkout notices failure to lock HEAD' span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -f .git/HEAD.lock" &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\t>.git/HEAD.lock &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git checkout -b other\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'create ref directory/file conflict scenario' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/heads/outer/inner master &&\n'
            span_id: 76
          ) (Token id:Id.Lit_Chars val:'\n' span_id:77) 
          (Token
            id: Id.Lit_Chars
            val: '\t# do not rely on symbolic-ref to get a known state,\n'
            span_id: 78
          ) (Token id:Id.Lit_Chars val:'\t# as it may use the same code we are testing\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\treset_to_df () {\n' span_id:80) (Token id:Id.Lit_Chars val:'\t\techo "ref: refs/heads/outer" >.git/HEAD\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\t}\n' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'checkout away from d/f HEAD (unpacked, to branch)'
            span_id: 89
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\treset_to_df &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:95)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'checkout away from d/f HEAD (unpacked, to detached)'
            span_id: 102
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\treset_to_df &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit checkout --detach master\n' span_id:108)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack refs' span_id:115))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) 
          (Token id:Id.Lit_Chars val:'\tgit pack-refs --all --prune\n' span_id:120)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'checkout away from d/f HEAD (packed, to branch)' span_id:127))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\treset_to_df &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:133)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'checkout away from d/f HEAD (packed, to detached)'
            span_id: 140
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\treset_to_df &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\tgit checkout --detach master\n' span_id:146)
        )
      }
    )
    (C {(test_done)})
  ]
)