(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:'Rename interaction with pathspec.\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Sentence
      child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)})
      terminator: (Token id:Id.Op_Semi val:';' span_id:30)
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare reference tree' span_id:38))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tmkdir path0 path1 &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tcp "$TEST_DIRECTORY"/diff-lib/COPYING path0/COPYING &&\n' span_id:44) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --add path0/COPYING &&\n'
            span_id: 45
          ) (Token id:Id.Lit_Chars val:'\ttree=$(git write-tree) &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\techo $tree\n' span_id:47)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare work tree' span_id:54))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\tcp path0/COPYING path1/COPYING &&\n' span_id:59) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --add --remove path0/COPYING path1/COPYING\n'
            span_id: 60
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:76)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:79)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:80)) (OF)}
          here_end_span_id: 84
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100\tpath0/COPYING\tpath1/COPYING\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copy detection' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-index -C --find-copies-harder $tree >current &&\n'
            span_id: 94
          ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:95)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copy detection, cached' span_id:102))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-index -C --find-copies-harder --cached $tree >current &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:108)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:130)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:133)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:134)) 
              (OF)
            }
          here_end_span_id: 138
          stdin_parts: [
            (
':000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A\tpath1/COPYING\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'copy, limited to a subtree' span_id:143))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-index -C --find-copies-harder $tree path1 >current &&\n'
            span_id: 148
          ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:149)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tweak work tree' span_id:156))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'\trm -f path0/COPYING &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\tgit update-index --remove path0/COPYING\n' span_id:162)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:180)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:183)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:184)) 
              (OF)
            }
          here_end_span_id: 188
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100\tpath0/COPYING\tpath1/COPYING\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename detection' span_id:193))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:197) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-index -C --find-copies-harder $tree >current &&\n'
            span_id: 198
          ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:199)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:218)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:221)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:222)) 
              (OF)
            }
          here_end_span_id: 226
          stdin_parts: [
            (
':000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A\tpath1/COPYING\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rename, limited to a subtree' span_id:231))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-index -C --find-copies-harder $tree path1 >current &&\n'
            span_id: 236
          ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:237)
        )
      }
    )
    (C {(test_done)})
  ]
)