(command.CommandList
  children: [
    (command.ShFunction
      name: set_fake_editor
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<write_script>} {<fake-editor.sh>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.MultiLine
                      here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
                      here_end_span_id: 129
                      stdin_parts: [
                        <'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_fork: T
            )
            (C {<test_set_editor>} 
              {
                (DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>})) 
                  <'/fake-editor.sh'>
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: set_cat_todo_editor
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<write_script>} {<fake-editor.sh>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.MultiLine
                      here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
                      here_end_span_id: 178
                      stdin_parts: [<'grep "^[^#]" "$1"\n'> <'exit 1\n'>]
                    )
                )
              ]
              do_fork: T
            )
            (C {<test_set_editor>} 
              {
                (DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>})) 
                  <'/fake-editor.sh'>
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: test_linear_range
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:revlist_merges)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<git>} {<rev-list>} {<--merges>} {(DQ ($ Id.VSub_Number '$2'))})
                          )
                        }
                      spids: [206]
                    )
                  ]
                )
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$revlist_merges'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:expected)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [233]
                    )
                  ]
                )
              ]
            )
            (C {<Id.KW_Set set>} {<-->} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<git>} {<log>} {<--reverse>} 
                      {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <s>} {(DQ ($ Id.VSub_Number '$2'))}
                    )
                )
              }
            )
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$expected'))} {<Id.Lit_Equals '='>} 
              {(DQ ($ Id.VSub_Star '$*'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: reset_rebase
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<test_might_fail>} {<git>} {<rebase>} {<--abort>})
                (C {<git>} {<reset>} {<--hard>})
                (C {<git>} {<clean>} {<-f>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cherry_pick
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<git>} {<cherry-pick>} {<-n>} {(DQ ($ Id.VSub_Number '$2'))})
                (C {<git>} {<commit>} {<-m>} {(DQ ($ Id.VSub_Number '$1'))})
                (C {<git>} {<tag>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: revert
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<git>} {<revert>} {<-n>} {(DQ ($ Id.VSub_Number '$2'))})
                (C {<git>} {<commit>} {<-m>} {(DQ ($ Id.VSub_Number '$1'))})
                (C {<git>} {<tag>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: make_empty
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<git>} {<commit>} {<--allow-empty>} {<-m>} {(DQ ($ Id.VSub_Number '$1'))})
                (C {<git>} {<tag>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
  ]
)