(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:'reset --hard unmerged' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\tmkdir before later &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\t>before/1 &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\t>before/2 &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\t>hello &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\t>later/3 &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit add before hello later &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m world &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tH=$(git rev-parse :hello) &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit rm --cached hello &&\n' span_id:31) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "100644 $H 2\thello" | git update-index --index-info &&\n'
            span_id: 32
          ) (Token id:Id.Lit_Chars val:'\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\trm -f hello &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tmkdir -p hello &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t>hello/world &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\ttest "$(git ls-files -o)" = hello/world\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\n' span_id:38)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'reset --hard should restore unmerged ones' span_id:45))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit ls-files --error-unmatch before/1 before/2 hello later/3 &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\ttest -f hello\n' span_id:53) (Token id:Id.Lit_Chars val:'\n' span_id:54)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'reset --hard did not corrupt index or cached-tree'
            span_id: 61
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) (Token id:Id.Lit_Chars val:'\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tT=$(git write-tree) &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\trm -f .git/index &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\tgit add before hello later &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tU=$(git write-tree) &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\ttest "$T" = "$U"\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72)
        )
      }
    )
    (C {(test_done)})
  ]
)