(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: 'Same rename detection as t4003 but testing diff-raw -z.\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:40))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&\n'
            span_id: 46
          ) (Token id:Id.Lit_Chars val:'     echo frotz >rezrov &&\n' span_id:47) 
          (Token
            id: Id.Lit_Chars
            val: '    git update-index --add COPYING rezrov &&\n'
            span_id: 48
          ) (Token id:Id.Lit_Chars val:'    tree=$(git write-tree) &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'    echo $tree' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare work tree' span_id:59))} 
      {(SQ (Token id:Id.Lit_Chars val:'sed -e ' span_id:65)) (s/HOWEVER/However/) 
        (SQ (Token id:Id.Lit_Chars val:' <COPYING >COPYING.1 &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'    sed -e ' span_id:70)
        ) (s/GPL/G.P.L/g) 
        (SQ (Token id:Id.Lit_Chars val:' <COPYING >COPYING.2 &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'    rm -f COPYING &&\n' span_id:75) (Token id:Id.Lit_Chars val:'    git update-index --add --remove COPYING COPYING.?' span_id:76)
        )
      }
    )
    (command.Simple
      words: [{(git)} {(diff-index)} {(-z)} {(-C)} {($ Id.VSub_DollarName '$tree')}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:103)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:109)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:112)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:113)) 
              (OF)
            }
          here_end_span_id: 122
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\n'
            )
            ('COPYING\n')
            ('COPYING.1\n')
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 R1234\n'
            )
            ('COPYING\n')
            ('COPYING.2\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#1)' span_id:129))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw_z current expected' span_id:135))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare work tree again' span_id:148))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'mv COPYING.2 COPYING &&\n' span_id:154) 
          (Token
            id: Id.Lit_Chars
            val: '     git update-index --add --remove COPYING COPYING.1 COPYING.2'
            span_id: 155
          )
        )
      }
    )
    (command.Simple
      words: [{(git)} {(diff-index)} {(-z)} {(-C)} {($ Id.VSub_DollarName '$tree')}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:182)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:187)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:190)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:191)) 
              (OF)
            }
          here_end_span_id: 199
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M\n'
            )
            ('COPYING\n')
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\n'
            )
            ('COPYING\n')
            ('COPYING.1\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#2)' span_id:206))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw_z current expected' span_id:212))}
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare work tree once again' span_id:238))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&\n'
            span_id: 244
          ) (Token id:Id.Lit_Chars val:'     git update-index --add --remove COPYING COPYING.1' span_id:245)
        )
      }
    )
    (command.Simple
      words: [
        {(git)}
        {(diff-index)}
        {(-z)}
        {(-C)}
        {(--find-copies-harder)}
        {($ Id.VSub_DollarName '$tree')}
      ]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:261)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:266)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:269)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:270)) 
              (OF)
            }
          here_end_span_id: 276
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\n'
            )
            ('COPYING\n')
            ('COPYING.1\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#3)' span_id:283))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw_z current expected' span_id:289))}
    )
    (C {(test_done)})
  ]
)