(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:'typechange rename detection' 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:'\trm -f foo bar &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tcat "$TEST_DIRECTORY"/../COPYING >foo &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\ttest_ln_s_add linklink bar &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit add foo &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m Initial &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit tag one &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit rm -f foo bar &&\n' span_id:29) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat "$TEST_DIRECTORY"/../COPYING >bar &&\n'
            span_id: 30
          ) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add linklink foo &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\tgit add bar &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -a -m Second &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tgit tag two &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tgit rm -f foo bar &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tcat "$TEST_DIRECTORY"/../COPYING >foo &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tgit add foo &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit commit -a -m Third &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\tgit tag three &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\tmv foo bar &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\ttest_ln_s_add linklink foo &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tgit add bar &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m Fourth &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tgit tag four &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\t# This is purely for sanity check\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit rm -f foo bar &&\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat "$TEST_DIRECTORY"/../COPYING >foo &&\n'
            span_id: 51
          ) (Token id:Id.Lit_Chars val:'\tcat "$TEST_DIRECTORY"/../Makefile >bar &&\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\tgit add foo bar &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit commit -a -m Fifth &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\tgit tag five &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\tgit rm -f foo bar &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\tcat "$TEST_DIRECTORY"/../Makefile >foo &&\n' span_id:58) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat "$TEST_DIRECTORY"/../COPYING >bar &&\n'
            span_id: 59
          ) (Token id:Id.Lit_Chars val:'\tgit add foo bar &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m Sixth &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit tag six\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cross renames to be detected for regular files' span_id:70))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-tree five six -r --name-status -B -M | sort >actual &&\n'
            span_id: 76
          ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\t\techo "R100\tfoo\tbar"\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\techo "R100\tbar\tfoo"\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\t} | sort >expect &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\n' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cross renames to be detected for typechange' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id:Id.Lit_Chars val:'\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-tree one two -r --name-status -B -M | sort >actual &&\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\t\techo "R100\tfoo\tbar"\n' span_id:97) (Token id:Id.Lit_Chars val:'\t\techo "R100\tbar\tfoo"\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t} | sort >expect &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\n' span_id:101)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'moves and renames' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id:Id.Lit_Chars val:'\n' span_id:113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff-tree three four -r --name-status -B -M | sort >actual &&\n'
            span_id: 114
          ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\t\t# see -B -M (#6) in t4008\n' span_id:116) (Token id:Id.Lit_Chars val:'\t\techo "C100\tfoo\tbar"\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\t\techo "T100\tfoo"\n' span_id:118) (Token id:Id.Lit_Chars val:'\t} | sort >expect &&\n' span_id:119) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:120) (Token id:Id.Lit_Chars val:'\n' span_id:121)
        )
      }
    )
    (C {(test_done)})
  ]
)