(CommandList
  children: [
    (FuncDef
      name: set_fake_editor
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(write_script)} {(fake-editor.sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: -1
                  body: 
                    {("case \"$1\" in\n") ("*/COMMIT_EDITMSG)\n") 
                      ("test -z \"$EXPECT_HEADER_COUNT\" ||\n") 
                      (
"test \"$EXPECT_HEADER_COUNT\" = \"$(sed -n '1s/^# This is a combination of \\(.*\\) commits\\./\\1/p' < \"$1\")\" ||\n"
                      ) ("test \"# # GETTEXT POISON #\" = \"$(sed -n '1p' < \"$1\")\" ||\n") ("exit\n") 
                      (
"test -z \"$FAKE_COMMIT_MESSAGE\" || echo \"$FAKE_COMMIT_MESSAGE\" > \"$1\"\n"
                      ) ("test -z \"$FAKE_COMMIT_AMEND\" || echo \"$FAKE_COMMIT_AMEND\" >> \"$1\"\n") ("exit\n") (";;\n") 
                      ("esac\n") ("test -z \"$EXPECT_COUNT\" ||\n") 
                      (
"test \"$EXPECT_COUNT\" = $(sed -e '/^#/d' -e '/^$/d' < \"$1\" | wc -l) ||\n"
                      ) ("exit\n") ("test -z \"$FAKE_LINES\" && exit\n") ("grep -v '^#' < \"$1\" > \"$1\".tmp\n") 
                      ("rm -f \"$1\"\n") ("echo 'rebase -i script before editing:'\n") ("cat \"$1\".tmp\n") ("action=pick\n") 
                      ("for line in $FAKE_LINES; do\n") ("case $line in\n") ("squash|fixup|edit|reword|drop)\n") ("action=\"$line\";;\n") ("exec*)\n") 
                      ("echo \"$line\" | sed 's/_/ /g' >> \"$1\";;\n") ("\"#\")\n") ("echo '# comment' >> \"$1\";;\n") ("\">\")\n") ("echo >> \"$1\";;\n") ("bad)\n") 
                      ("action=\"badcmd\";;\n") ("fakesha)\n") ("echo \"$action XXXXXXX False commit\" >> \"$1\"\n") ("action=pick;;\n") ("*)\n") 
                      ("sed -n \"${line}s/^pick/$action/p\" < \"$1\".tmp >> \"$1\"\n") ("action=pick;;\n") ("esac\n") ("done\n") ("echo 'rebase -i script after editing:'\n") ("cat \"$1\"\n")
                    }
                  do_expansion: False
                  here_end: EOF
                  was_filled: True
                  spids: [83]
                )
              ]
            )
            (C {(test_set_editor)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(pwd)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [92 94]
                  ) (/fake-editor.sh)
                )
              }
            )
          ]
          spids: [76]
        )
      spids: [71 75]
    )
    (FuncDef
      name: set_cat_todo_editor
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(write_script)} {(fake-editor.sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: -1
                  body: {("grep \"^[^#]\" \"$1\"\n") ("exit 1\n")}
                  do_expansion: False
                  here_end: EOF
                  was_filled: True
                  spids: [129]
                )
              ]
            )
            (C {(test_set_editor)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: (CommandList children:[(C {(pwd)})])
                    left_token: <Left_CommandSub "$(">
                    spids: [137 139]
                  ) (/fake-editor.sh)
                )
              }
            )
          ]
          spids: [122]
        )
      spids: [117 121]
    )
    (FuncDef
      name: test_linear_range
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:revlist_merges)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-list)} {(--merges)} {(DQ ($ VSub_Number "$2"))})
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [161 171]
                          )
                        }
                      spids: [160]
                    )
                  ]
                  spids: [160]
                )
                (AndOr
                  children: [
                    (C {(test)} {(-z)} {(DQ ($ VSub_Name "$revlist_merges"))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:expected)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [187]
                        )
                      ]
                      spids: [187]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (C {(set)} {(--)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (C {(git)} {(log)} {(--reverse)} {(--format) (Lit_Other "=") (Lit_Other "%") (s)} 
                          {(DQ ($ VSub_Number "$2"))}
                        )
                      ]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [195 210]
                )
              }
            )
            (C {(test)} {(DQ ($ VSub_Name "$expected"))} {(Lit_Other "=")} {(DQ ($ VSub_Star "$*"))})
          ]
          spids: [157]
        )
      spids: [152 156]
    )
    (FuncDef
      name: reset_rebase
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(test_might_fail)} {(git)} {(rebase)} {(--abort)})
                (AndOr
                  children: [(C {(git)} {(reset)} {(--hard)}) (C {(git)} {(clean)} {(-f)})]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [233]
        )
      spids: [228 232]
    )
    (FuncDef
      name: cherry_pick
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(cherry-pick)} {(-n)} {(DQ ($ VSub_Number "$2"))})
                (AndOr
                  children: [
                    (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number "$1"))})
                    (C {(git)} {(tag)} {(DQ ($ VSub_Number "$1"))})
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [270]
        )
      spids: [265 269]
    )
    (FuncDef
      name: revert
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(revert)} {(-n)} {(DQ ($ VSub_Number "$2"))})
                (AndOr
                  children: [
                    (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number "$1"))})
                    (C {(git)} {(tag)} {(DQ ($ VSub_Number "$1"))})
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [315]
        )
      spids: [310 314]
    )
    (FuncDef
      name: make_empty
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(commit)} {(--allow-empty)} {(-m)} {(DQ ($ VSub_Number "$1"))})
                (C {(git)} {(tag)} {(DQ ($ VSub_Number "$1"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [360]
        )
      spids: [355 359]
    )
  ]
)