(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:'More rename detection tests.\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'The rename detection logic should be able to detect pure rename or\n'
                  span_id: 17
                ) 
                (Token
                  id: Id.Lit_Chars
                  val: 'copy of symbolic links, but should not produce rename/copy followed\n'
                  span_id: 18
                ) (Token id:Id.Lit_Chars val:'by an edit for them.\n' span_id:19)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)})
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare reference tree' span_id:41))} 
      {(SQ (Token id:Id.Lit_Chars val:'echo xyzzy | tr -d ' span_id:47)) 
        (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:49)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:50)) 
        (SQ (Token id:Id.Lit_Chars val:'012 >yomin &&\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'     ln -s xyzzy frotz &&\n' span_id:53) (Token id:Id.Lit_Chars val:'    git update-index --add frotz yomin &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'    tree=$(git write-tree) &&\n' span_id:55) (Token id:Id.Lit_Chars val:'    echo $tree' span_id:56)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare work tree' span_id:67))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'mv frotz rezrov &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'     rm -f yomin &&\n' span_id:74) (Token id:Id.Lit_Chars val:'     ln -s xyzzy nitfol &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'     ln -s xzzzy bozbar &&\n' span_id:76) 
          (Token
            id: Id.Lit_Chars
            val: '    git update-index --add --remove frotz rezrov nitfol bozbar yomin'
            span_id: 77
          )
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup diff output' span_id:102))} 
      {
        (DQ ('\n') ('    GIT_DIFF_OPTS=--unified=0 git diff-index -C -p ') 
          ($ Id.VSub_DollarName '$tree') (' >current &&\n') ('    cat >expected <<') (Id.Lit_Other '\\') ('EOF\n') 
          ('diff --git a/bozbar b/bozbar\n') ('new file mode 120000\n') ('--- /dev/null\n') ('+++ b/bozbar\n') ('@@ -0,0 +1 @@\n') ('+xzzzy\n') 
          (Id.Lit_Other '\\') (' No newline at end of file\n') ('diff --git a/frotz b/nitfol\n') ('similarity index 100%\n') 
          ('copy from frotz\n') ('copy to nitfol\n') ('diff --git a/frotz b/rezrov\n') ('similarity index 100%\n') 
          ('rename from frotz\n') ('rename to rezrov\n') ('diff --git a/yomin b/yomin\n') ('deleted file mode 100644\n') ('--- a/yomin\n') 
          ('+++ /dev/null\n') ('@@ -1 +0,0 @@\n') ('-xyzzy\n') (Id.Lit_Other '\\') (' No newline at end of file\n') ('EOF\n')
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'validate diff output' span_id:148))} {(SQ (Token id:Id.Lit_Chars val:'compare_diff_patch current expected' span_id:154))}
    )
    (C {(test_done)})
  ]
)