(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:'subtree merge strategy' 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:'\ts="1 2 3 4 5 6 7 8" &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tfor i in $s; do echo $i; done >hello &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tgit add hello &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b side &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\techo >>hello world &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tgit add hello &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit commit -m second &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tfor i in mundo $s; do echo $i; done >hello &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\tgit add hello &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -m master\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\n' span_id:34)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'subtree available and works like recursive' span_id:41))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:45) (Token id:Id.Lit_Chars val:'\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tgit merge -s subtree side &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\tfor i in mundo $s world; do echo $i; done >expect &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect hello\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\tmkdir git-gui &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\tcd git-gui &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo git-gui > git-gui.sh &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\to1=$(git hash-object git-gui.sh) &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit add git-gui.sh &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "initial git-gui" &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tcd .. &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tmkdir git &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tcd git &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\techo git >git.c &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\to2=$(git hash-object git.c) &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\tgit add git.c &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "initial git"\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initial merge' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tgit remote add -f gui ../git-gui &&\n' span_id:88) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge -s ours --no-commit --allow-unrelated-histories gui/master &&\n'
            span_id: 89
          ) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=git-gui/ -u gui/master &&\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Merge git-gui as our subdirectory" &&\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\tgit checkout -b work &&\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\t(\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\tgit.c"\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:98)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge update' span_id:105))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tcd ../git-gui &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\techo git-gui2 > git-gui.sh &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\to3=$(git hash-object git-gui.sh) &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit add git-gui.sh &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b master2 &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit commit -m "update git-gui" &&\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\tcd ../git &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit pull -s subtree gui master2 &&\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\t(\n' span_id:119) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n'
            span_id: 120
          ) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\tgit.c"\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:123)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'initial ambiguous subtree' span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tcd ../git &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tgit reset --hard master &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b master2 &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tgit merge -s ours --no-commit gui/master &&\n' span_id:138) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit read-tree --prefix=git-gui2/ -u gui/master &&\n'
            span_id: 139
          ) (Token id:Id.Lit_Chars val:'\tgit commit -m "Merge git-gui2 as our subdirectory" &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b work2 &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:143) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n' span_id:144) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'
            span_id: 145
          ) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\tgit.c"\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:148)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge using explicit' span_id:155))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\tcd ../git &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\tgit reset --hard master2 &&\n' span_id:161) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit pull -Xsubtree=git-gui gui master2 &&\n'
            span_id: 162
          ) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:164) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o3 0\tgit-gui/git-gui.sh"\n' span_id:165) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "100644 $o1 0\tgit-gui2/git-gui.sh"\n'
            span_id: 166
          ) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\tgit.c"\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:169)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge2 using explicit' span_id:176))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\tcd ../git &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\tgit reset --hard master2 &&\n' span_id:182) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit pull -Xsubtree=git-gui2 gui master2 &&\n'
            span_id: 183
          ) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:185) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tgit-gui/git-gui.sh"\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "100644 $o3 0\tgit-gui2/git-gui.sh"\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\tgit.c"\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:190)
        )
      }
    )
    (C {(test_done)})
  ]
)