(CommandList
  children: [
    (FuncDef
      name: set_fake_editor
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(write_script)} {(fake-editor.sh)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLessDash
                  fd: 16777215
                  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: T
                  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: 16777215
                  body: {('grep "^[^#]" "$1"\n') ('exit 1\n')}
                  do_expansion: False
                  here_end: EOF
                  was_filled: T
                  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
              ops: [Op_DAmp Op_DAmp]
              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]
                )
                (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]
                )
              ]
            )
            (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
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(test_might_fail)} {(git)} {(rebase)} {(--abort)})
                (C {(git)} {(reset)} {(--hard)})
                (C {(git)} {(clean)} {(-f)})
              ]
            )
          ]
          spids: [233]
        )
      spids: [228 232]
    )
    (FuncDef
      name: cherry_pick
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(git)} {(cherry-pick)} {(-n)} {(DQ ($ VSub_Number '$2'))})
                (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number '$1'))})
                (C {(git)} {(tag)} {(DQ ($ VSub_Number '$1'))})
              ]
            )
          ]
          spids: [270]
        )
      spids: [265 269]
    )
    (FuncDef
      name: revert
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp Op_DAmp]
              children: [
                (C {(git)} {(revert)} {(-n)} {(DQ ($ VSub_Number '$2'))})
                (C {(git)} {(commit)} {(-m)} {(DQ ($ VSub_Number '$1'))})
                (C {(git)} {(tag)} {(DQ ($ VSub_Number '$1'))})
              ]
            )
          ]
          spids: [315]
        )
      spids: [310 314]
    )
    (FuncDef
      name: make_empty
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(git)} {(commit)} {(--allow-empty)} {(-m)} {(DQ ($ VSub_Number '$1'))})
                (C {(git)} {(tag)} {(DQ ($ VSub_Number '$1'))})
              ]
            )
          ]
          spids: [360]
        )
      spids: [355 359]
    )
  ]
)