(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:'Merge-recursive merging renames' 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:'cat >A <<\\EOF &&\n' span_id:21) (Token id:Id.Lit_Chars val:'a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n' span_id:22) 
          (Token
            id: Id.Lit_Chars
            val: 'b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n'
            span_id: 23
          ) (Token id:Id.Lit_Chars val:'c cccccccccccccccccccccccccccccccccccccccccccccccc\n' span_id:24) 
          (Token
            id: Id.Lit_Chars
            val: 'd dddddddddddddddddddddddddddddddddddddddddddddddd\n'
            span_id: 25
          ) (Token id:Id.Lit_Chars val:'e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n' span_id:26) 
          (Token
            id: Id.Lit_Chars
            val: 'f ffffffffffffffffffffffffffffffffffffffffffffffff\n'
            span_id: 27
          ) (Token id:Id.Lit_Chars val:'g gggggggggggggggggggggggggggggggggggggggggggggggg\n' span_id:28) 
          (Token
            id: Id.Lit_Chars
            val: 'h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\n'
            span_id: 29
          ) (Token id:Id.Lit_Chars val:'i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\n' span_id:30) 
          (Token
            id: Id.Lit_Chars
            val: 'j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj\n'
            span_id: 31
          ) (Token id:Id.Lit_Chars val:'k kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk\n' span_id:32) 
          (Token
            id: Id.Lit_Chars
            val: 'l llllllllllllllllllllllllllllllllllllllllllllllll\n'
            span_id: 33
          ) (Token id:Id.Lit_Chars val:'m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n' span_id:34) 
          (Token
            id: Id.Lit_Chars
            val: 'n nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\n'
            span_id: 35
          ) (Token id:Id.Lit_Chars val:'o oooooooooooooooooooooooooooooooooooooooooooooooo\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'cat >M <<\\EOF &&\n' span_id:39) (Token id:Id.Lit_Chars val:'A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n' span_id:40) 
          (Token
            id: Id.Lit_Chars
            val: 'B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n'
            span_id: 41
          ) (Token id:Id.Lit_Chars val:'C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n' span_id:42) 
          (Token
            id: Id.Lit_Chars
            val: 'D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n'
            span_id: 43
          ) (Token id:Id.Lit_Chars val:'E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n' span_id:44) 
          (Token
            id: Id.Lit_Chars
            val: 'F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n'
            span_id: 45
          ) (Token id:Id.Lit_Chars val:'G GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n' span_id:46) 
          (Token
            id: Id.Lit_Chars
            val: 'H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\n'
            span_id: 47
          ) (Token id:Id.Lit_Chars val:'I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n' span_id:48) 
          (Token
            id: Id.Lit_Chars
            val: 'J JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ\n'
            span_id: 49
          ) (Token id:Id.Lit_Chars val:'K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK\n' span_id:50) 
          (Token
            id: Id.Lit_Chars
            val: 'L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL\n'
            span_id: 51
          ) (Token id:Id.Lit_Chars val:'M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n' span_id:52) 
          (Token
            id: Id.Lit_Chars
            val: 'N NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n'
            span_id: 53
          ) (Token id:Id.Lit_Chars val:'O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:55) (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'git add A M &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'git commit -m "initial has A and M" &&\n' span_id:58) (Token id:Id.Lit_Chars val:'git branch white &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'git branch red &&\n' span_id:60) (Token id:Id.Lit_Chars val:'git branch blue &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id:Id.Lit_Chars val:'git checkout white &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: 'sed -e "/^g /s/.*/g : white changes a line/" <A >B &&\n'
            span_id: 64
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N &&\n'
            span_id: 65
          ) (Token id:Id.Lit_Chars val:'rm -f A M &&\n' span_id:66) 
          (Token
            id: Id.Lit_Chars
            val: 'git update-index --add --remove A B M N &&\n'
            span_id: 67
          ) (Token id:Id.Lit_Chars val:'git commit -m "white renames A->B, M->N" &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id:Id.Lit_Chars val:'git checkout red &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'echo created by red >R &&\n' span_id:71) (Token id:Id.Lit_Chars val:'git update-index --add R &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'git commit -m "red creates R" &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'git checkout blue &&\n' span_id:75) (Token id:Id.Lit_Chars val:'sed -e "/^o /s/.*/g : blue changes a line/" <A >B &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'rm -f A &&\n' span_id:77) (Token id:Id.Lit_Chars val:'mv B A &&\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'git update-index A &&\n' span_id:79) (Token id:Id.Lit_Chars val:'git commit -m "blue modify A" &&\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'git checkout master' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge white into red (A->B,M->N)' span_id:92))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b red-white red &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\tgit merge white &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\tgit write-tree &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\ttest_path_is_file B &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file N &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\ttest_path_is_file R &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing A &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing M\n' span_id:105)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge blue into white (A->B, mod A, A untracked)'
            span_id: 115
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b white-blue white &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\techo dirty >A &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\tgit merge blue &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\tgit write-tree &&\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file A &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\techo dirty >expect &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect A &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\ttest_path_is_file B &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file N &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing M\n' span_id:130)
        )
      }
    )
    (C {(test_done)})
  ]
)