(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"auto squash">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY")) (/lib-rebase.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\techo 0 >file0 &&\n"> <"\tgit add . &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m \"initial commit\" &&\n"> <"\techo 0 >file1 &&\n"> <"\techo 2 >file2 &&\n"> <"\tgit add . &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m \"first commit\" &&\n"> <"\tgit tag first-commit &&\n"> <"\techo 3 >file3 &&\n"> <"\tgit add . &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m \"second commit\" &&\n"> <"\tgit tag base\n">
        )
      }
    )
    (FuncDef
      name: test_auto_fixup
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(reset)} {(--hard)} {(base)})
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(file1)} spids:[70])]
                    )
                    (AndOr
                      children: [
                        (C {(git)} {(add)} {(-u)})
                        (AndOr
                          children: [
                            (C {(test_tick)})
                            (AndOr
                              children: [
                                (C {(git)} {(commit)} {(-m)} {(DQ ("fixup! first"))})
                                (AndOr
                                  children: [
                                    (C {(git)} {(tag)} {($ VSub_Number "$1")})
                                    (AndOr
                                      children: [
                                        (C {(test_tick)})
                                        (AndOr
                                          children: [
                                            (C {(git)} {(rebase)} {($ VSub_Number "$2")} {(-i)} 
                                              {(HEAD) (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")}
                                            )
                                            (AndOr
                                              children: [
                                                (SimpleCommand
                                                  words: [{(git)} {(log)} {(--oneline)}]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: -1
                                                      arg_word: {(actual)}
                                                      spids: [140]
                                                    )
                                                  ]
                                                )
                                                (AndOr
                                                  children: [
                                                    (C {(test_line_count)} {(Lit_Other "=")} {(3)} 
                                                      {(actual)}
                                                    )
                                                    (AndOr
                                                      children: [
                                                        (C {(git)} {(diff)} {(--exit-code)} 
                                                          {($ VSub_Number "$1")}
                                                        )
                                                        (AndOr
                                                          children: [
                                                            (C {(test)} {(1)} {(Lit_Other "=")} 
                                                              {
                                                                (DQ 
                                                                  (CommandSubPart
                                                                    command_list: 
                                                                      (CommandList
                                                                        children: [
                                                                          (C {(git)} {(cat-file)} 
                                                                            {(blob)} {(HEAD) (Lit_Other "^") (Lit_Other ":") (file1)}
                                                                          )
                                                                        ]
                                                                      )
                                                                    left_token: 
                                                                      <Left_CommandSub "$(">
                                                                    spids: [175 186]
                                                                  )
                                                                )
                                                              }
                                                            )
                                                            (C {(test)} {(1)} {(Lit_Other "=")} 
                                                              {
                                                                (CommandSubPart
                                                                  command_list: 
                                                                    (CommandList
                                                                      children: [
                                                                        (Pipeline
                                                                          children: [
                                                                            (C {(git)} {(cat-file)} 
                                                                              {(commit)} {(HEAD) (Lit_Other "^")}
                                                                            )
                                                                            (C {(grep)} {(first)})
                                                                            (C {(wc)} {(-l)})
                                                                          ]
                                                                          negated: False
                                                                        )
                                                                      ]
                                                                    )
                                                                  left_token: <Left_CommandSub "$(">
                                                                  spids: [198 219]
                                                                )
                                                              }
                                                            )
                                                          ]
                                                          op_id: Op_DAmp
                                                        )
                                                      ]
                                                      op_id: Op_DAmp
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [52]
        )
      spids: [47 51]
    )
    (C {(test_expect_success)} {(SQ <"auto fixup (option)">)} 
      {(SQ <"\n"> <"\ttest_auto_fixup final-fixup-option --autosquash\n">)}
    )
    (C {(test_expect_success)} {(SQ <"auto fixup (config)">)} 
      {
        (SQ <"\n"> <"\tgit config rebase.autosquash true &&\n"> 
          <"\ttest_auto_fixup final-fixup-config-true &&\n"> <"\ttest_must_fail test_auto_fixup fixup-config-true-no --no-autosquash &&\n"> 
          <"\tgit config rebase.autosquash false &&\n"> <"\ttest_must_fail test_auto_fixup final-fixup-config-false\n">
        )
      }
    )
    (FuncDef
      name: test_auto_squash
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(reset)} {(--hard)} {(base)})
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(file1)} spids:[275])]
                    )
                    (AndOr
                      children: [
                        (C {(git)} {(add)} {(-u)})
                        (AndOr
                          children: [
                            (C {(test_tick)})
                            (AndOr
                              children: [
                                (C {(git)} {(commit)} {(-m)} {(DQ ("squash! first"))})
                                (AndOr
                                  children: [
                                    (C {(git)} {(tag)} {($ VSub_Number "$1")})
                                    (AndOr
                                      children: [
                                        (C {(test_tick)})
                                        (AndOr
                                          children: [
                                            (C {(git)} {(rebase)} {($ VSub_Number "$2")} {(-i)} 
                                              {(HEAD) (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")}
                                            )
                                            (AndOr
                                              children: [
                                                (SimpleCommand
                                                  words: [{(git)} {(log)} {(--oneline)}]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: -1
                                                      arg_word: {(actual)}
                                                      spids: [345]
                                                    )
                                                  ]
                                                )
                                                (AndOr
                                                  children: [
                                                    (C {(test_line_count)} {(Lit_Other "=")} {(3)} 
                                                      {(actual)}
                                                    )
                                                    (AndOr
                                                      children: [
                                                        (C {(git)} {(diff)} {(--exit-code)} 
                                                          {($ VSub_Number "$1")}
                                                        )
                                                        (AndOr
                                                          children: [
                                                            (C {(test)} {(1)} {(Lit_Other "=")} 
                                                              {
                                                                (DQ 
                                                                  (CommandSubPart
                                                                    command_list: 
                                                                      (CommandList
                                                                        children: [
                                                                          (C {(git)} {(cat-file)} 
                                                                            {(blob)} {(HEAD) (Lit_Other "^") (Lit_Other ":") (file1)}
                                                                          )
                                                                        ]
                                                                      )
                                                                    left_token: 
                                                                      <Left_CommandSub "$(">
                                                                    spids: [380 391]
                                                                  )
                                                                )
                                                              }
                                                            )
                                                            (C {(test)} {(2)} {(Lit_Other "=")} 
                                                              {
                                                                (CommandSubPart
                                                                  command_list: 
                                                                    (CommandList
                                                                      children: [
                                                                        (Pipeline
                                                                          children: [
                                                                            (C {(git)} {(cat-file)} 
                                                                              {(commit)} {(HEAD) (Lit_Other "^")}
                                                                            )
                                                                            (C {(grep)} {(first)})
                                                                            (C {(wc)} {(-l)})
                                                                          ]
                                                                          negated: False
                                                                        )
                                                                      ]
                                                                    )
                                                                  left_token: <Left_CommandSub "$(">
                                                                  spids: [403 424]
                                                                )
                                                              }
                                                            )
                                                          ]
                                                          op_id: Op_DAmp
                                                        )
                                                      ]
                                                      op_id: Op_DAmp
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [257]
        )
      spids: [252 256]
    )
    (C {(test_expect_success)} {(SQ <"auto squash (option)">)} 
      {(SQ <"\n"> <"\ttest_auto_squash final-squash --autosquash\n">)}
    )
    (C {(test_expect_success)} {(SQ <"auto squash (config)">)} 
      {
        (SQ <"\n"> <"\tgit config rebase.autosquash true &&\n"> 
          <"\ttest_auto_squash final-squash-config-true &&\n"> <"\ttest_must_fail test_auto_squash squash-config-true-no --no-autosquash &&\n"> 
          <"\tgit config rebase.autosquash false &&\n"> <"\ttest_must_fail test_auto_squash final-squash-config-false\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"misspelled auto squash">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"squash! forst\" &&\n"> <"\tgit tag final-missquash &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit rebase --autosquash -i HEAD^^^ &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_line_count = 4 actual &&\n"> 
          <"\tgit diff --exit-code final-missquash &&\n"> <"\ttest 0 = $(git rev-list final-missquash...HEAD | wc -l)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"auto squash that matches 2 commits">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> <"\techo 4 >file4 &&\n"> <"\tgit add file4 &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"first new commit\" &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"squash! first\" &&\n"> <"\tgit tag final-multisquash &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit rebase --autosquash -i HEAD~4 &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_line_count = 4 actual &&\n"> 
          <"\tgit diff --exit-code final-multisquash &&\n"> <"\ttest 1 = \"$(git cat-file blob HEAD^^:file1)\" &&\n"> 
          <"\ttest 2 = $(git cat-file commit HEAD^^ | grep first | wc -l) &&\n"> <"\ttest 1 = $(git cat-file commit HEAD | grep first | wc -l)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"auto squash that matches a commit after the squash">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"squash! third\" &&\n"> <"\techo 4 >file4 &&\n"> <"\tgit add file4 &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"third commit\" &&\n"> <"\tgit tag final-presquash &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit rebase --autosquash -i HEAD~4 &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_line_count = 5 actual &&\n"> 
          <"\tgit diff --exit-code final-presquash &&\n"> <"\ttest 0 = \"$(git cat-file blob HEAD^^:file1)\" &&\n"> 
          <"\ttest 1 = \"$(git cat-file blob HEAD^:file1)\" &&\n"> <"\ttest 1 = $(git cat-file commit HEAD | grep third | wc -l) &&\n"> 
          <"\ttest 1 = $(git cat-file commit HEAD^ | grep third | wc -l)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"auto squash that matches a sha1">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"squash! $(git rev-parse --short HEAD^)\" &&\n"> <"\tgit tag final-shasquash &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit rebase --autosquash -i HEAD^^^ &&\n"> <"\tgit log --oneline >actual &&\n"> 
          <"\ttest_line_count = 3 actual &&\n"> <"\tgit diff --exit-code final-shasquash &&\n"> 
          <"\ttest 1 = \"$(git cat-file blob HEAD^:file1)\" &&\n"> <"\ttest 1 = $(git cat-file commit HEAD^ | grep squash | wc -l)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"auto squash that matches longer sha1">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit -m \"squash! $(git rev-parse --short=11 HEAD^)\" &&\n"> 
          <"\tgit tag final-longshasquash &&\n"> <"\ttest_tick &&\n"> <"\tgit rebase --autosquash -i HEAD^^^ &&\n"> <"\tgit log --oneline >actual &&\n"> 
          <"\ttest_line_count = 3 actual &&\n"> <"\tgit diff --exit-code final-longshasquash &&\n"> 
          <"\ttest 1 = \"$(git cat-file blob HEAD^:file1)\" &&\n"> <"\ttest 1 = $(git cat-file commit HEAD^ | grep squash | wc -l)\n">
        )
      }
    )
    (FuncDef
      name: test_auto_commit_flags
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(reset)} {(--hard)} {(base)})
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(file1)} spids:[609])]
                    )
                    (AndOr
                      children: [
                        (C {(git)} {(add)} {(-u)})
                        (AndOr
                          children: [
                            (C {(test_tick)})
                            (AndOr
                              children: [
                                (C {(git)} {(commit)} {(--) ($ VSub_Number "$1")} {(first-commit)})
                                (AndOr
                                  children: [
                                    (C {(git)} {(tag)} {(final-commit-) ($ VSub_Number "$1")})
                                    (AndOr
                                      children: [
                                        (C {(test_tick)})
                                        (AndOr
                                          children: [
                                            (C {(git)} {(rebase)} {(--autosquash)} {(-i)} 
                                              {(HEAD) (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")}
                                            )
                                            (AndOr
                                              children: [
                                                (SimpleCommand
                                                  words: [{(git)} {(log)} {(--oneline)}]
                                                  redirects: [
                                                    (Redir
                                                      op_id: Redir_Great
                                                      fd: -1
                                                      arg_word: {(actual)}
                                                      spids: [678]
                                                    )
                                                  ]
                                                )
                                                (AndOr
                                                  children: [
                                                    (C {(test_line_count)} {(Lit_Other "=")} {(3)} 
                                                      {(actual)}
                                                    )
                                                    (AndOr
                                                      children: [
                                                        (C {(git)} {(diff)} {(--exit-code)} 
                                                          {(final-commit-) ($ VSub_Number "$1")}
                                                        )
                                                        (AndOr
                                                          children: [
                                                            (C {(test)} {(1)} {(Lit_Other "=")} 
                                                              {
                                                                (DQ 
                                                                  (CommandSubPart
                                                                    command_list: 
                                                                      (CommandList
                                                                        children: [
                                                                          (C {(git)} {(cat-file)} 
                                                                            {(blob)} {(HEAD) (Lit_Other "^") (Lit_Other ":") (file1)}
                                                                          )
                                                                        ]
                                                                      )
                                                                    left_token: 
                                                                      <Left_CommandSub "$(">
                                                                    spids: [714 725]
                                                                  )
                                                                )
                                                              }
                                                            )
                                                            (C {(test)} {($ VSub_Number "$2")} 
                                                              {(Lit_Other "=")} 
                                                              {
                                                                (CommandSubPart
                                                                  command_list: 
                                                                    (CommandList
                                                                      children: [
                                                                        (Pipeline
                                                                          children: [
                                                                            (C {(git)} {(cat-file)} 
                                                                              {(commit)} {(HEAD) (Lit_Other "^")}
                                                                            )
                                                                            (C {(grep)} {(first)})
                                                                            (C {(wc)} {(-l)})
                                                                          ]
                                                                          negated: False
                                                                        )
                                                                      ]
                                                                    )
                                                                  left_token: <Left_CommandSub "$(">
                                                                  spids: [737 758]
                                                                )
                                                              }
                                                            )
                                                          ]
                                                          op_id: Op_DAmp
                                                        )
                                                      ]
                                                      op_id: Op_DAmp
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [591]
        )
      spids: [586 590]
    )
    (C {(test_expect_success)} {(SQ <"use commit --fixup">)} 
      {(SQ <"\n"> <"\ttest_auto_commit_flags fixup 1\n">)}
    )
    (C {(test_expect_success)} {(SQ <"use commit --squash">)} 
      {(SQ <"\n"> <"\ttest_auto_commit_flags squash 2\n">)}
    )
    (FuncDef
      name: test_auto_fixup_fixup
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(reset)} {(--hard)} {(base)})
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(echo)} {(1)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(file1)} spids:[810])]
                    )
                    (AndOr
                      children: [
                        (C {(git)} {(add)} {(-u)})
                        (AndOr
                          children: [
                            (C {(test_tick)})
                            (AndOr
                              children: [
                                (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number "$1") ("! first"))})
                                (AndOr
                                  children: [
                                    (SimpleCommand
                                      words: [{(echo)} {(2)}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_Great
                                          fd: -1
                                          arg_word: {(file1)}
                                          spids: [848]
                                        )
                                      ]
                                    )
                                    (AndOr
                                      children: [
                                        (C {(git)} {(add)} {(-u)})
                                        (AndOr
                                          children: [
                                            (C {(test_tick)})
                                            (AndOr
                                              children: [
                                                (C {(git)} {(commit)} {(-m)} 
                                                  {
                                                    (DQ ($ VSub_Number "$1") ("! ") 
                                                      ($ VSub_Number "$2") ("! first")
                                                    )
                                                  }
                                                )
                                                (AndOr
                                                  children: [
                                                    (C {(git)} {(tag)} 
                                                      {
                                                        (DQ (final-) ($ VSub_Number "$1") (-) 
                                                          ($ VSub_Number "$2")
                                                        )
                                                      }
                                                    )
                                                    (AndOr
                                                      children: [
                                                        (C {(test_tick)})
                                                        (AndOr
                                                          children: [
                                                            (Subshell
                                                              child: 
                                                                (AndOr
                                                                  children: [
                                                                    (C {(set_cat_todo_editor)})
                                                                    (AndOr
                                                                      children: [
                                                                        (SimpleCommand
                                                                          words: [
                                                                            {(test_must_fail)}
                                                                            {(git)}
                                                                            {(rebase)}
                                                                            {(--autosquash)}
                                                                            {(-i)}
                                                                            {(HEAD) (Lit_Other "^") 
                                                                              (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")
                                                                            }
                                                                          ]
                                                                          redirects: [
                                                                            (Redir
                                                                              op_id: Redir_Great
                                                                              fd: -1
                                                                              arg_word: {(actual)}
                                                                              spids: [927]
                                                                            )
                                                                          ]
                                                                        )
                                                                        (AndOr
                                                                          children: [
                                                                            (SimpleCommand
                                                                              words: [{(cat)}]
                                                                              redirects: [
                                                                                (Redir
                                                                                  op_id: Redir_Great
                                                                                  fd: -1
                                                                                  arg_word: 
                                                                                    {(expected)}
                                                                                  spids: [935]
                                                                                )
                                                                                (HereDoc
                                                                                  op_id: 
Redir_DLessDash
                                                                                  fd: -1
                                                                                  body: 
                                                                                    {
                                                                                      (DQ ("pick ") 
                                                                                        (CommandSubPart
                                                                                          command_list: 
                                                                                            (CommandList
                                                                                              children: [
                                                                                                (C 
                                                                                                  {
                                                                                                    (
git
                                                                                                    )
                                                                                                  } {(rev-parse)} {(--short)} {(HEAD) (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")}
                                                                                                )
                                                                                              ]
                                                                                            )
                                                                                          left_token: 
                                                                                            <
Left_CommandSub "$("
                                                                                            >
                                                                                          spids: [
944
955
                                                                                          ]
                                                                                        ) (" first commit\n") ($ VSub_Number "$1") (" ") 
                                                                                        (CommandSubPart
                                                                                          command_list: 
                                                                                            (CommandList
                                                                                              children: [
                                                                                                (C 
                                                                                                  {
                                                                                                    (
git
                                                                                                    )
                                                                                                  } {(rev-parse)} {(--short)} {(HEAD) (Lit_Other "^")}
                                                                                                )
                                                                                              ]
                                                                                            )
                                                                                          left_token: 
                                                                                            <
Left_CommandSub "$("
                                                                                            >
                                                                                          spids: [
959
968
                                                                                          ]
                                                                                        ) (" ") ($ VSub_Number "$1") ("! first\n") ($ VSub_Number "$1") (" ") 
                                                                                        (CommandSubPart
                                                                                          command_list: 
                                                                                            (CommandList
                                                                                              children: [
                                                                                                (C 
                                                                                                  {
                                                                                                    (
git
                                                                                                    )
                                                                                                  } {(rev-parse)} {(--short)} {(HEAD)}
                                                                                                )
                                                                                              ]
                                                                                            )
                                                                                          left_token: 
                                                                                            <
Left_CommandSub "$("
                                                                                            >
                                                                                          spids: [
974
982
                                                                                          ]
                                                                                        ) (" ") ($ VSub_Number "$1") ("! ") ($ VSub_Number "$2") ("! first\n") ("pick ") 
                                                                                        (CommandSubPart
                                                                                          command_list: 
                                                                                            (CommandList
                                                                                              children: [
                                                                                                (C 
                                                                                                  {
                                                                                                    (
git
                                                                                                    )
                                                                                                  } {(rev-parse)} {(--short)} {(HEAD) (Lit_Other "^") (Lit_Other "^")}
                                                                                                )
                                                                                              ]
                                                                                            )
                                                                                          left_token: 
                                                                                            <
Left_CommandSub "$("
                                                                                            >
                                                                                          spids: [
989
999
                                                                                          ]
                                                                                        ) (" second commit\n")
                                                                                      )
                                                                                    }
                                                                                  do_expansion: True
                                                                                  here_end: EOF
                                                                                  was_filled: True
                                                                                  spids: [938]
                                                                                )
                                                                              ]
                                                                            )
                                                                            (C {(test_cmp)} 
                                                                              {(expected)} {(actual)}
                                                                            )
                                                                          ]
                                                                          op_id: Op_DAmp
                                                                        )
                                                                      ]
                                                                      op_id: Op_DAmp
                                                                    )
                                                                  ]
                                                                  op_id: Op_DAmp
                                                                )
                                                              spids: [903 1009]
                                                            )
                                                            (AndOr
                                                              children: [
                                                                (C {(git)} {(rebase)} {(--autosquash)} 
                                                                  {(-i)} {(HEAD) (Lit_Other "^") (Lit_Other "^") (Lit_Other "^") (Lit_Other "^")}
                                                                )
                                                                (AndOr
                                                                  children: [
                                                                    (SimpleCommand
                                                                      words: [
                                                                        {(git)}
                                                                        {(log)}
                                                                        {(--oneline)}
                                                                      ]
                                                                      redirects: [
                                                                        (Redir
                                                                          op_id: Redir_Great
                                                                          fd: -1
                                                                          arg_word: {(actual)}
                                                                          spids: [1037]
                                                                        )
                                                                      ]
                                                                    )
                                                                    (C {(test_line_count)} 
                                                                      {(Lit_Other "=")} {(3)} {(actual)}
                                                                    )
                                                                  ]
                                                                  op_id: Op_DAmp
                                                                )
                                                              ]
                                                              op_id: Op_DAmp
                                                            )
                                                          ]
                                                          op_id: Op_DAmp
                                                        )
                                                      ]
                                                      op_id: Op_DAmp
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (C {(git)} {(diff)} {(--exit-code)} 
                  {(DQ (final-) ($ VSub_Number "$1") (-) ($ VSub_Number "$2"))}
                )
                (AndOr
                  children: [
                    (C {(test)} {(2)} {(Lit_Other "=")} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(cat-file)} {(blob)} 
                                    {(HEAD) (Lit_Other "^") (Lit_Other ":") (file1)}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1075 1086]
                          )
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "=")} {(DQ (fixup))})
                          ]
                          action: [
                            (C {(test)} {(1)} {(Lit_Other "=")} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(git)} {(cat-file)} {(commit)} {(HEAD) (Lit_Other "^")})
                                            (C {(grep)} {(first)})
                                            (C {(wc)} {(-l)})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [1116 1137]
                                )
                              }
                            )
                          ]
                          spids: [-1 1107]
                        )
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "=")} {(DQ (squash))})
                          ]
                          action: [
                            (C {(test)} {(3)} {(Lit_Other "=")} 
                              {
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (Pipeline
                                          children: [
                                            (C {(git)} {(cat-file)} {(commit)} {(HEAD) (Lit_Other "^")})
                                            (C {(grep)} {(first)})
                                            (C {(wc)} {(-l)})
                                          ]
                                          negated: False
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [1164 1185]
                                )
                              }
                            )
                          ]
                          spids: [1140 1155]
                        )
                      ]
                      else_action: [(C {(false)})]
                      spids: [1188 1194]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [792]
        )
      spids: [787 791]
    )
    (C {(test_expect_success)} {(SQ <"fixup! fixup!">)} 
      {(SQ <"\n"> <"\ttest_auto_fixup_fixup fixup fixup\n">)}
    )
    (C {(test_expect_success)} {(SQ <"fixup! squash!">)} 
      {(SQ <"\n"> <"\ttest_auto_fixup_fixup fixup squash\n">)}
    )
    (C {(test_expect_success)} {(SQ <"squash! squash!">)} 
      {(SQ <"\n"> <"\ttest_auto_fixup_fixup squash squash\n">)}
    )
    (C {(test_expect_success)} {(SQ <"squash! fixup!">)} 
      {(SQ <"\n"> <"\ttest_auto_fixup_fixup squash fixup\n">)}
    )
    (C {(test_expect_success)} {(SQ <"autosquash with custom inst format">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard base &&\n"> 
          <"\tgit config --add rebase.instructionFormat \"[%an @ %ar] %s\"  &&\n"> <"\techo 2 >file1 &&\n"> <"\tgit add -u &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m \"squash! $(git rev-parse --short HEAD^)\" &&\n"> <"\techo 1 >file1 &&\n"> <"\tgit add -u &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit commit -m \"squash! $(git log -n 1 --format=%s HEAD~2)\" &&\n"> <"\tgit tag final-squash-instFmt &&\n"> <"\ttest_tick &&\n"> 
          <"\tgit rebase --autosquash -i HEAD~4 &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_line_count = 3 actual &&\n"> 
          <"\tgit diff --exit-code final-squash-instFmt &&\n"> <"\ttest 1 = \"$(git cat-file blob HEAD^:file1)\" &&\n"> 
          <"\ttest 2 = $(git cat-file commit HEAD^ | grep squash | wc -l)\n">
        )
      }
    )
    (FuncDef
      name: set_backup_editor
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(write_script)} {(backup-editor.sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: -1
                  body: {("cp \"$1\" .git/backup-\"$(basename \"$1\")\"\n")}
                  do_expansion: False
                  here_end: EOF
                  was_filled: True
                  spids: [1288]
                )
              ]
            )
            (C {(test_set_editor)} {(DQ ($ VSub_Name "$PWD") (/backup-editor.sh))})
          ]
          spids: [1281]
        )
      spids: [1276 1280]
    )
    (C {(test_expect_failure)} {(SQ <"autosquash with multiple empty patches">)} 
      {
        (SQ <"\n"> <"\ttest_tick &&\n"> <"\tgit commit --allow-empty -m \"empty\" &&\n"> 
          <"\ttest_tick &&\n"> <"\tgit commit --allow-empty -m \"empty2\" &&\n"> <"\ttest_tick &&\n"> <"\t>fixup &&\n"> 
          <"\tgit add fixup &&\n"> <"\tgit commit --fixup HEAD^^ &&\n"> <"\t(\n"> <"\t\tset_backup_editor &&\n"> 
          <"\t\tGIT_USE_REBASE_HELPER=false \\\n"> <"\t\tgit rebase -i --force-rebase --autosquash HEAD~4 &&\n"> 
          <"\t\tgrep empty2 .git/backup-git-rebase-todo\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"extra spaces after fixup!">)} 
      {
        (SQ <"\n"> <"\tbase=$(git rev-parse HEAD) &&\n"> <"\ttest_commit to-fixup &&\n"> 
          <"\tgit commit --allow-empty -m \"fixup!  to-fixup\" &&\n"> <"\tgit rebase -i --autosquash --keep-empty HEAD~2 &&\n"> <"\tparent=$(git rev-parse HEAD^) &&\n"> 
          <"\ttest $base = $parent\n">
        )
      }
    )
    (C {(test_done)})
  ]
)