(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:'am --abort' 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:'\tfor i in a b c d e f g\n' span_id:21) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:22) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tdone >file-1 &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tcp file-1 file-2 &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit add file-1 file-2 &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit tag initial &&\n' span_id:29) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit format-patch --stdout --root initial >initial.patch &&\n'
            span_id: 30
          ) (Token id:Id.Lit_Chars val:'\tfor i in 2 3 4 5 6\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:32) (Token id:Id.Lit_Chars val:'\t\techo $i >>file-1 &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\t\techo $i >otherfile-$i &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\t\tgit add otherfile-$i &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m $i || return 1\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit format-patch --no-numbered initial &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b side initial &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\techo local change >file-2-expect\n' span_id:41)
        )
      }
    )
    (command.ForEach
      iter_name: with3
      iter_words: [{(SQ )} {(SQ (Token id:Id.Lit_Chars val:' -3' span_id:55))}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {(DQ (am) ($ Id.VSub_DollarName '$with3') (' stops at a patch that does not apply'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) 
                  (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard initial &&\n' span_id:72) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tcp file-2-expect file-2 &&\n'
                    span_id: 73
                  ) (Token id:Id.Lit_Chars val:'\n' span_id:74) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_must_fail git am$with3 000[1245]-*.patch &&\n'
                    span_id: 75
                  ) (Token id:Id.Lit_Chars val:'\t\tgit log --pretty=tformat:%s >actual &&\n' span_id:76) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tfor i in 3 2 initial\n'
                    span_id: 77
                  ) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:78) 
                  (Token id:Id.Lit_Chars val:'\t\t\techo $i\n' span_id:79) (Token id:Id.Lit_Chars val:'\t\tdone >expect &&\n' span_id:80) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 81
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:82)
                )
              }
            )
            (C {(test_expect_success)} 
              {
                (DQ (am) ($ Id.VSub_DollarName '$with3') (' --skip continue after failed am') 
                  ($ Id.VSub_DollarName '$with3')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_must_fail git am$with3 --skip >output &&\n'
                    span_id: 98
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_i18ngrep "^Applying" output >output.applying &&\n' span_id:99) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_i18ngrep "^Applying: 6$" output.applying &&\n'
                    span_id: 100
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_i18ncmp file-2-expect file-2 &&\n' span_id:101) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest ! -f .git/MERGE_RR\n'
                    span_id: 102
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:103)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('am --abort goes back after failed am') ($ Id.VSub_DollarName '$with3'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:116) 
                  (Token id:Id.Lit_Chars val:'\t\tgit am --abort &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse HEAD >actual &&\n' span_id:118) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-parse initial >expect &&\n'
                    span_id: 119
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:120) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp file-2-expect file-2 &&\n'
                    span_id: 121
                  ) (Token id:Id.Lit_Chars val:'\t\tgit diff-index --exit-code --cached HEAD &&\n' span_id:122) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest ! -f .git/MERGE_RR\n'
                    span_id: 123
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:124)
                )
              }
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am -3 --skip removes otherfile-4' span_id:134))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 0003-*.patch &&\n' span_id:140) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 141
          ) (Token id:Id.Lit_Chars val:'\ttest 4 = "$(cat otherfile-4)" &&\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\tgit am --skip &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev initial HEAD &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherfile-4\n' span_id:146)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am -3 --abort removes otherfile-4' span_id:153))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:157) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 0003-*.patch &&\n' span_id:159) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 160
          ) (Token id:Id.Lit_Chars val:'\ttest 4 = "$(cat otherfile-4)" &&\n' span_id:161) 
          (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev initial HEAD &&\n' span_id:163) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:164) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherfile-4\n' span_id:165)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am --abort will keep the local commits intact' span_id:172))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:176) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am 0004-*.patch &&\n'
            span_id: 177
          ) (Token id:Id.Lit_Chars val:'\ttest_commit unrelated &&\n' span_id:178) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >actual &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:182)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am --abort will keep dirty index intact' span_id:189))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:193) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\techo dirtyfile >dirtyfile &&\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\tcp dirtyfile dirtyfile.expected &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\tgit add dirtyfile &&\n' span_id:197) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am 0001-*.patch &&\n'
            span_id: 198
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev initial HEAD &&\n' span_id:199) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file dirtyfile &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\ttest_cmp dirtyfile.expected dirtyfile &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev initial HEAD &&\n' span_id:203) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file dirtyfile &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\ttest_cmp dirtyfile.expected dirtyfile\n' span_id:205)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am -3 stops on conflict on unborn branch' span_id:212))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f --orphan orphan &&\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\trm -f otherfile-4 &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 0003-*.patch &&\n' span_id:220) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 221
          ) (Token id:Id.Lit_Chars val:'\ttest 4 = "$(cat otherfile-4)"\n' span_id:222)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am -3 --skip clears index on unborn branch' span_id:229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir .git/rebase-apply &&\n'
            span_id: 234
          ) (Token id:Id.Lit_Chars val:'\techo tmpfile >tmpfile &&\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\tgit add tmpfile &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tgit am --skip &&\n' span_id:237) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files)" &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherfile-4 &&\n' span_id:239) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing tmpfile\n' span_id:240)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'am -3 --abort removes otherfile-4 on unborn branch'
            span_id: 247
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:251) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f --orphan orphan &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:253) 
          (Token id:Id.Lit_Chars val:'\trm -f otherfile-4 file-1 &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 0003-*.patch &&\n' span_id:255) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 256
          ) (Token id:Id.Lit_Chars val:'\ttest 4 = "$(cat otherfile-4)" &&\n' span_id:257) 
          (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:259) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherfile-4\n' span_id:260)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'am -3 --abort on unborn branch removes applied commits'
            span_id: 267
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:271) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f --orphan orphan &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:273) 
          (Token
            id: Id.Lit_Chars
            val: '\trm -f otherfile-4 otherfile-2 file-1 file-2 &&\n'
            span_id: 274
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 initial.patch 0003-*.patch &&\n' span_id:275) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 276
          ) (Token id:Id.Lit_Chars val:'\ttest 4 = "$(cat otherfile-4)" &&\n' span_id:277) 
          (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:279) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing otherfile-4 &&\n' span_id:280) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing file-1 &&\n' span_id:281) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing file-2 &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git log --oneline 2>/dev/null | wc -l) &&\n' span_id:283) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest refs/heads/orphan = "$(git symbolic-ref HEAD)"\n'
            span_id: 284
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'am --abort on unborn branch will keep local commits intact'
            span_id: 291
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:295) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f --orphan orphan &&\n' span_id:296) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:297) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am 0004-*.patch &&\n'
            span_id: 298
          ) (Token id:Id.Lit_Chars val:'\ttest_commit unrelated2 &&\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:300) (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:301) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >actual &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:303)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am --skip leaves index stat info alone' span_id:310))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:314) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit checkout -f --orphan skip-stat-info &&\n'
            span_id: 315
          ) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:316) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit skip-should-be-untouched &&\n'
            span_id: 317
          ) (Token id:Id.Lit_Chars val:'\ttest-chmtime =0 skip-should-be-untouched.t &&\n' span_id:318) 
          (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\tgit diff-files --exit-code --quiet &&\n' span_id:320) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am 0001-*.patch &&\n'
            span_id: 321
          ) (Token id:Id.Lit_Chars val:'\tgit am --skip &&\n' span_id:322) 
          (Token id:Id.Lit_Chars val:'\tgit diff-files --exit-code --quiet\n' span_id:323)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'am --abort leaves index stat info alone' span_id:330))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:334) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit checkout -f --orphan abort-stat-info &&\n'
            span_id: 335
          ) (Token id:Id.Lit_Chars val:'\tgit reset &&\n' span_id:336) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit abort-should-be-untouched &&\n'
            span_id: 337
          ) (Token id:Id.Lit_Chars val:'\ttest-chmtime =0 abort-should-be-untouched.t &&\n' span_id:338) 
          (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\tgit diff-files --exit-code --quiet &&\n' span_id:340) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am 0001-*.patch &&\n'
            span_id: 341
          ) (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:342) 
          (Token id:Id.Lit_Chars val:'\tgit diff-files --exit-code --quiet\n' span_id:343)
        )
      }
    )
    (C {(test_done)})
  ]
)