(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 and pathspecs/refspecs ambiguities' 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:'\techo hello >all &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\tgit add all world &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\tgit branch world\n' span_id:27)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reference must be a tree' span_id:34))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:38) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git checkout $(git hash-object ./all) --\n'
            span_id: 39
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch switching' span_id:46))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "refs/heads/master" = "$(git symbolic-ref HEAD)" &&\n'
            span_id: 51
          ) (Token id:Id.Lit_Chars val:'\tgit checkout world -- &&\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "refs/heads/world" = "$(git symbolic-ref HEAD)"\n'
            span_id: 53
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'checkout world from the index' span_id:60))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\techo bye > world &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tgit checkout -- world &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tgit diff --exit-code --quiet\n' span_id:67)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'non ambiguous call' span_id:74))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\tgit checkout all\n' span_id:79)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'allow the most common case' span_id:86))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\tgit checkout world &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest "refs/heads/world" = "$(git symbolic-ref HEAD)"\n' span_id:92)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check ambiguity' span_id:99))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git checkout world all\n'
            span_id: 104
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check ambiguity in subdir' span_id:111))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\t# not ambiguous because sub/world does not exist\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\tgit -C sub checkout world ../all &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\techo hello >sub/world &&\n' span_id:119) 
          (Token
            id: Id.Lit_Chars
            val: '\t# ambiguous because sub/world does exist\n'
            span_id: 120
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -C sub checkout world ../all\n' span_id:121)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'disambiguate checking out from a tree-ish' span_id:128))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\techo bye > world &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit checkout world -- world &&\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tgit diff --exit-code --quiet\n' span_id:135)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'accurate error message with more than one ref' span_id:142))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git checkout HEAD master -- 2>actual &&\n'
            span_id: 147
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep 2 actual &&\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "one reference expected, 2 given" actual\n'
            span_id: 149
          )
        )
      }
    )
    (C {(test_done)})
  ]
)