(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.\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)} {(-C)} {($ Id.VSub_DollarName '$tree')}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:101)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:107)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:110)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:111)) 
              (OF)
            }
          here_end_span_id: 116
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\tCOPYING\tCOPYING.1\n'
            )
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 R1234\tCOPYING\tCOPYING.2\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#1)' span_id:123))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw current expected' span_id:129))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare work tree again' span_id:142))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'mv COPYING.2 COPYING &&\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '     git update-index --add --remove COPYING COPYING.1 COPYING.2'
            span_id: 149
          )
        )
      }
    )
    (command.Simple
      words: [{(git)} {(diff-index)} {(-C)} {($ Id.VSub_DollarName '$tree')}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:174)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:179)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:182)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:183)) 
              (OF)
            }
          here_end_span_id: 188
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M\tCOPYING\n'
            )
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\tCOPYING\tCOPYING.1\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#2)' span_id:195))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw current expected' span_id:201))}
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare work tree once again' span_id:227))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&\n'
            span_id: 233
          ) (Token id:Id.Lit_Chars val:'     git update-index --add --remove COPYING COPYING.1' span_id:234)
        )
      }
    )
    (command.Simple
      words: [{(git)} {(diff-index)} {(-C)} {(--find-copies-harder)} {($ Id.VSub_DollarName '$tree')}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:248)
          fd: -1
          arg_word: {(current)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:253)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:256)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:257)) 
              (OF)
            }
          here_end_span_id: 261
          stdin_parts: [
            (
':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234\tCOPYING\tCOPYING.1\n'
            )
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate output from rename/copy detection (#3)' span_id:268))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_raw current expected' span_id:274))}
    )
    (C {(test_done)})
  ]
)