(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:'"git merge" top-level frontend' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: t3033_reset
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(git)} {(checkout)} {(-B)} {(master)} {(two)})
                (C {(git)} {(branch)} {(-f)} {(left)} {(three)})
                (C {(git)} {(branch)} {(-f)} {(right)} {(four)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit branch left &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tgit branch right &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit checkout left &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\tgit checkout right &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest_commit four &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit checkout --orphan newroot &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\ttest_commit five &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master\n' span_id:78)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge an octopus into void' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan test &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tgit rm -fr . &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge left right &&\n' span_id:97) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse --verify HEAD &&\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\tgit diff --quiet &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse HEAD\n' span_id:100)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge an octopus, fast-forward (ff)' span_id:107))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit reset --hard one &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\tgit merge left right &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\t# one is ancestor of three (left) and four (right)\n' span_id:115) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse --verify HEAD^3 &&\n'
            span_id: 116
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^1 HEAD^2 | sort >actual &&\n' span_id:117) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse three four | sort >expect &&\n'
            span_id: 118
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:119)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge octopus, non-fast-forward (ff)' span_id:126))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgit reset --hard one &&\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\tgit merge --no-ff left right &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\t# one is ancestor of three (left) and four (right)\n' span_id:134) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse --verify HEAD^4 &&\n'
            span_id: 135
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n' span_id:136) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse one three four | sort >expect &&\n'
            span_id: 137
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:138)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge octopus, fast-forward (does not ff)' span_id:145))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit merge left right &&\n' span_id:151) 
          (Token
            id: Id.Lit_Chars
            val: '\t# two (master) is not an ancestor of three (left) and four (right)\n'
            span_id: 152
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^4 &&\n' span_id:153) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n'
            span_id: 154
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse two three four | sort >expect &&\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:156)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge octopus, non-fast-forward' span_id:163))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff left right &&\n' span_id:169) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse --verify HEAD^4 &&\n'
            span_id: 170
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse two three four | sort >expect &&\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:173)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge FETCH_HEAD octopus into void' span_id:184))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan test &&\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\tgit rm -fr . &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:192) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge FETCH_HEAD &&\n'
            span_id: 193
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD &&\n' span_id:194) 
          (Token id:Id.Lit_Chars val:'\tgit diff --quiet &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse HEAD\n' span_id:196)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge FETCH_HEAD octopus fast-forward (ff)' span_id:203))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:207) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\tgit reset --hard one &&\n' span_id:209) 
          (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit merge FETCH_HEAD &&\n' span_id:211) 
          (Token
            id: Id.Lit_Chars
            val: '\t# one is ancestor of three (left) and four (right)\n'
            span_id: 212
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^3 &&\n' span_id:213) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse HEAD^1 HEAD^2 | sort >actual &&\n'
            span_id: 214
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse three four | sort >expect &&\n' span_id:215) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:216)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge FETCH_HEAD octopus non-fast-forward (ff)' span_id:223))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\tgit reset --hard one &&\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff FETCH_HEAD &&\n' span_id:231) 
          (Token
            id: Id.Lit_Chars
            val: '\t# one is ancestor of three (left) and four (right)\n'
            span_id: 232
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^4 &&\n' span_id:233) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n'
            span_id: 234
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse one three four | sort >expect &&\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:236)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge FETCH_HEAD octopus fast-forward (does not ff)'
            span_id: 243
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:247) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:249) 
          (Token id:Id.Lit_Chars val:'\tgit merge FETCH_HEAD &&\n' span_id:250) 
          (Token
            id: Id.Lit_Chars
            val: '\t# two (master) is not an ancestor of three (left) and four (right)\n'
            span_id: 251
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^4 &&\n' span_id:252) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n'
            span_id: 253
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse two three four | sort >expect &&\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:255)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge FETCH_HEAD octopus non-fast-forward' span_id:262))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:267) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\tgit merge --no-ff FETCH_HEAD &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse --verify HEAD^4 &&\n' span_id:270) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse HEAD^1 HEAD^2 HEAD^3 | sort >actual &&\n'
            span_id: 271
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse two three four | sort >expect &&\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:273)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'refuse two-project merge by default' span_id:283))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:287) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:288) (Token id:Id.Lit_Chars val:'\tgit reset --hard four &&\n' span_id:289) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge five\n' span_id:290)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'two-project merge with --allow-unrelated-histories'
            span_id: 297
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:301) 
          (Token id:Id.Lit_Chars val:'\tt3033_reset &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\tgit reset --hard four &&\n' span_id:303) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge --allow-unrelated-histories five &&\n'
            span_id: 304
          ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code five\n' span_id:305)
        )
      }
    )
    (C {(test_done)})
  ]
)