(command.CommandList
  children: [
    (C {<.>} {<git-sh-i18n>})
    (C {<unset>} {<CDPATH>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
          op: assign_op.Equal
          rhs: {(SQ <' \t\n'>)}
          spids: [47]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: git_broken_path_fix
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ <':'> ($ Id.VSub_DollarName PATH) <':'>)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_Number 1) <Id.Lit_Colon ':'> 
                      <Id.Lit_Star '*'>
                    }
                  ]
                  action: [(C {<Id.Lit_Colon ':'>} {<ok>})]
                  spids: [72 77 83 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.CommandList
                                    children: [
                                      (command.ShAssignment
                                        pairs: [
                                          (assign_pair
                                            lhs: 
                                              (sh_lhs_expr.Name
                                                left: <Id.Lit_VarLike 'SANE_TOOL_PATH='>
                                                name: SANE_TOOL_PATH
                                              )
                                            op: assign_op.Equal
                                            rhs: {(DQ ($ Id.VSub_Number 1))}
                                            spids: [94]
                                          )
                                        ]
                                        redirects: []
                                      )
                                      (command.ShAssignment
                                        pairs: [
                                          (assign_pair
                                            lhs: 
                                              (sh_lhs_expr.Name
                                                left: <Id.Lit_VarLike 'IFS='>
                                                name: IFS
                                              )
                                            op: assign_op.Equal
                                            rhs: {<Id.Lit_Colon ':'>}
                                            spids: [100]
                                          )
                                          (assign_pair
                                            lhs: 
                                              (sh_lhs_expr.Name
                                                left: <Id.Lit_VarLike 'path='>
                                                name: path
                                              )
                                            op: assign_op.Equal
                                            rhs: (rhs_word.Empty)
                                            spids: [103]
                                          )
                                          (assign_pair
                                            lhs: 
                                              (sh_lhs_expr.Name
                                                left: <Id.Lit_VarLike 'sep='>
                                                name: sep
                                              )
                                            op: assign_op.Equal
                                            rhs: (rhs_word.Empty)
                                            spids: [105]
                                          )
                                        ]
                                        redirects: []
                                      )
                                      (C {<set>} {<x>} {($ Id.VSub_DollarName PATH)})
                                      (C {<shift>})
                                      (command.ForEach
                                        iter_names: [elem]
                                        iterable: (for_iter.Args)
                                        body: 
                                          (command.DoGroup
                                            children: [
                                              (command.Case
                                                to_match: 
                                                  {
                                                    (DQ ($ Id.VSub_DollarName SANE_TOOL_PATH) <':'> 
                                                      ($ Id.VSub_DollarName elem)
                                                    )
                                                  }
                                                arms: [
                                                  (case_arm
                                                    pat_list: [
                                                      {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> 
                                                        <Id.Lit_Colon ':'> <'/bin'>
                                                      }
                                                      {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> 
                                                        <Id.Lit_Colon ':'> <'/usr/bin'>
                                                      }
                                                    ]
                                                    action: [
                                                      (command.ShAssignment
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: 
                                                              (sh_lhs_expr.Name
                                                                left: <Id.Lit_VarLike 'path='>
                                                                name: path
                                                              )
                                                            op: assign_op.Equal
                                                            rhs: 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName path) 
                                                                  ($ Id.VSub_DollarName sep) ($ Id.VSub_DollarName SANE_TOOL_PATH)
                                                                )
                                                              }
                                                            spids: [152]
                                                          )
                                                        ]
                                                        redirects: []
                                                      )
                                                      (command.ShAssignment
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: 
                                                              (sh_lhs_expr.Name
                                                                left: <Id.Lit_VarLike 'sep='>
                                                                name: sep
                                                              )
                                                            op: assign_op.Equal
                                                            rhs: {<Id.Lit_Colon ':'>}
                                                            spids: [160]
                                                          )
                                                        ]
                                                        redirects: []
                                                      )
                                                      (command.ShAssignment
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: 
                                                              (sh_lhs_expr.Name
                                                                left: 
                                                                  <Id.Lit_VarLike 'SANE_TOOL_PATH='>
                                                                name: SANE_TOOL_PATH
                                                              )
                                                            op: assign_op.Equal
                                                            rhs: (rhs_word.Empty)
                                                            spids: [164]
                                                          )
                                                        ]
                                                        redirects: []
                                                      )
                                                    ]
                                                    spids: [137 149 -1 167]
                                                  )
                                                ]
                                                redirects: []
                                              )
                                              (command.ShAssignment
                                                pairs: [
                                                  (assign_pair
                                                    lhs: 
                                                      (sh_lhs_expr.Name
                                                        left: <Id.Lit_VarLike 'path='>
                                                        name: path
                                                      )
                                                    op: assign_op.Equal
                                                    rhs: 
                                                      {
                                                        (DQ ($ Id.VSub_DollarName path) 
                                                          ($ Id.VSub_DollarName sep) ($ Id.VSub_DollarName elem)
                                                        )
                                                      }
                                                    spids: [170]
                                                  )
                                                ]
                                                redirects: []
                                              )
                                              (command.ShAssignment
                                                pairs: [
                                                  (assign_pair
                                                    lhs: 
                                                      (sh_lhs_expr.Name
                                                        left: <Id.Lit_VarLike 'sep='>
                                                        name: sep
                                                      )
                                                    op: assign_op.Equal
                                                    rhs: {<Id.Lit_Colon ':'>}
                                                    spids: [178]
                                                  )
                                                ]
                                                redirects: []
                                              )
                                            ]
                                          )
                                        redirects: []
                                      )
                                      (C {<echo>} {(DQ ($ Id.VSub_DollarName path))})
                                    ]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [90]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [86 87 195 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: die
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [(C {<die_with_status>} {<1>} {(DQ ($ Id.VSub_At '@'))})]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: die_with_status
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                  spids: [234]
                )
              ]
              redirects: []
            )
            (C {<shift>})
            (command.Simple
              words: [{<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {(DQ ($ Id.VSub_DollarName status))}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_QUIET='> name:GIT_QUIET)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [264]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: say
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})]
                    )
                  action: [(C {<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))})]
                  spids: [275 286]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_SPEC))})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShFunction
              name: usage
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (C {(DQ ($ Id.VSub_Number 0))} {<-h>})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'parseopt_extra='> name:parseopt_extra)
                  op: assign_op.Equal
                  rhs: (rhs_word.Empty)
                  spids: [342]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_KEEPDASHDASH))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'parseopt_extra='>
                          name: parseopt_extra
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <--keep-dashdash>)}
                      spids: [358]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_STUCKLONG))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'parseopt_extra='>
                          name: parseopt_extra
                        )
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName parseopt_extra) <' --stuck-long'>)}
                      spids: [377]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (C {<eval>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.AndOr
                        ops: [Id.Op_DPipe]
                        children: [
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_DollarName OPTIONS_SPEC))})
                              (C {<git>} {<rev-parse>} {<--parseopt>} 
                                {($ Id.VSub_DollarName parseopt_extra)} {<-->} {(DQ ($ Id.VSub_At '@'))}
                              )
                            ]
                            negated: F
                            stderr_indices: []
                          )
                          (C {<echo>} {<Id.ControlFlow_Exit exit>} {($ Id.VSub_QMark '?')})
                        ]
                      )
                    right: <Id.Eof_RParen _>
                  )
                )
              }
            )
          ]
          spids: [305 316]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dashless='> name:dashless)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<basename>} {<-->} {(DQ ($ Id.VSub_Number 0))})
                          (C {<sed>} {<-e>} {(SQ <'s/-/ /'>)})
                        ]
                        negated: F
                        stderr_indices: []
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              spids: [430]
            )
          ]
          redirects: []
        )
        (command.ShFunction
          name: usage
          body: 
            (BraceGroup
              left: <Id.Lit_LBrace '{'>
              children: [
                (C {<die>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<eval_gettext>} 
                            {
                              (DQ <'usage: '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <USAGE>
                              )
                            }
                          )
                        right: <Id.Eof_RParen _>
                      )
                    )
                  }
                )
              ]
              redirects: []
              right: <Id.Lit_RBrace '}'>
            )
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName LONG_USAGE))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LONG_USAGE='> name:LONG_USAGE)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (C {<eval_gettext>} 
                                  {
                                    (DQ <'usage: '> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\$'>
                                        ch: '$'
                                      ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <USAGE>
                                    )
                                  }
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      spids: [496]
                    )
                  ]
                  redirects: []
                )
              ]
              spids: [480 493]
            )
          ]
          else_action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LONG_USAGE='> name:LONG_USAGE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<eval_gettext>} 
                              {
                                (DQ <'usage: '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\$'>
                                    ch: '$'
                                  ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'USAGE\n'> <'\n'> 
                                  ($ Id.VSub_DollarName LONG_USAGE)
                                )
                              }
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [515]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
        )
        (command.Case
          to_match: {(DQ ($ Id.VSub_Number 1))}
          arms: [
            (case_arm
              pat_list: [{<-h>}]
              action: [
                (C {<echo>} {(DQ ($ Id.VSub_DollarName LONG_USAGE))})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
              ]
              spids: [546 547 -1 560]
            )
          ]
          redirects: []
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: set_reflog_action
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                          {
                            (DQ 
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name GIT_REFLOG_ACTION>
                                var_name: GIT_REFLOG_ACTION
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<set>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
                              name: GIT_REFLOG_ACTION
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Star '*'))}
                          spids: [694]
                        )
                      ]
                      redirects: []
                    )
                    (C {<export>} {<GIT_REFLOG_ACTION>})
                  ]
                  spids: [674 691]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: git_editor
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<-z>} 
                          {
                            (DQ 
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name GIT_EDITOR>
                                var_name: GIT_EDITOR
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<set>})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            )
                          }
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'GIT_EDITOR='>
                                  name: GIT_EDITOR
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: (C {<git>} {<Id.KW_Var var>} {<GIT_EDITOR>})
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              spids: [735]
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                          arg_word: {($ Id.VSub_QMark '?')}
                        )
                      ]
                    )
                  ]
                  spids: [717 732]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName GIT_EDITOR))} {(SQ <'"$@"'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: git_pager
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: (condition.Shell commands:[(C {<test>} {<-t>} {<1>})])
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<git>} {<Id.KW_Var var>} {<GIT_PAGER>})
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [789]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [777 786]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER)
                      op: assign_op.Equal
                      rhs: {<cat>}
                      spids: [802]
                    )
                  ]
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [vardef]
              iterable: 
                (for_iter.Words
                  words: [
                    {<Id.Lit_At '@'> <Id.Lit_Splice '@PAGER_ENV'> <Id.Lit_At '@'> <Id.Lit_At '@'>}
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name vardef>
                                var_name: vardef
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_DPercent '%%'>
                                    arg_word: {<'='> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          spids: [824]
                        )
                      ]
                      redirects: []
                    )
                    (C {<eval>} 
                      {
                        (DQ <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) <'{'> ($ Id.VSub_DollarName vardef) <'}'> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                            ch: '"'
                          ) <' && export '> ($ Id.VSub_DollarName var)
                        )
                      }
                    )
                  ]
                )
              redirects: []
            )
            (C {<eval>} {(DQ ($ Id.VSub_DollarName GIT_PAGER))} {(SQ <'"$@"'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: sane_grep
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<grep>}
                {<Id.Lit_At '@'> <Id.Lit_Splice '@SANE_TEXT_GREP'> <Id.Lit_At '@'> <Id.Lit_At '@'>}
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: []
              more_env: [
                (env_pair name:GREP_OPTIONS val:(rhs_word.Empty) spids:[873])
                (env_pair name:LC_ALL val:{<C>} spids:[875])
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: sane_egrep
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<egrep>}
                {<Id.Lit_At '@'> <Id.Lit_Splice '@SANE_TEXT_GREP'> <Id.Lit_At '@'> <Id.Lit_At '@'>}
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: []
              more_env: [
                (env_pair name:GREP_OPTIONS val:(rhs_word.Empty) spids:[900])
                (env_pair name:LC_ALL val:{<C>} spids:[902])
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: is_bare_repository
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [(C {<git>} {<rev-parse>} {<--is-bare-repository>})]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: cd_to_toplevel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cdup='> name:cdup)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<git>} {<rev-parse>} {<--show-toplevel>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [944]
                    )
                  ]
                  redirects: []
                )
                (C {<cd>} {(DQ ($ Id.VSub_DollarName cdup))})
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      words: [
                        {<gettextln>}
                        {
                          (DQ <'Cannot chdir to '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) <'cdup, the toplevel of the working tree'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: require_work_tree_exists
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} 
                          {
                            (DQ <z> 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<git>} {<rev-parse>} {<--is-bare-repository>})
                                right: <Id.Eof_RParen _>
                              )
                            )
                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<zfalse>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'program_name='>
                              name: program_name
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 0)}
                          spids: [1021]
                        )
                      ]
                      redirects: []
                    )
                    (C {<die>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ <'fatal: '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'program_name cannot be used without a working tree.'>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                  ]
                  spids: [997 1018]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: require_work_tree
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [{<git>} {<rev-parse>} {<--is-inside-work-tree>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    )
                  } {<Id.Lit_Equals '='>} {<true>}
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'program_name='>
                              name: program_name
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 0)}
                          spids: [1077]
                        )
                      ]
                      redirects: []
                    )
                    (C {<die>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<gettext>} 
                                {
                                  (DQ <'fatal: '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'program_name cannot be used without a working tree.'>
                                  )
                                }
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: require_clean_work_tree
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
            )
            (C {<git>} {<update-index>} {<-q>} {<--ignore-submodules>} {<--refresh>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1138]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [(C {<git>} {<diff-files>} {<--quiet>} {<--ignore-submodules>})]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                          spids: [1159]
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName action))}
                      arms: [
                        (case_arm
                          pat_list: [{<rebase>}]
                          action: [
                            (command.Simple
                              words: [{<gettextln>} {(DQ <'Cannot rebase: You have unstaged changes.'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [1172 1173 1186 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'rewrite branches'>)}]
                          action: [
                            (command.Simple
                              words: [
                                {<gettextln>}
                                {(DQ <'Cannot rewrite branches: You have unstaged changes.'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [1189 1192 1205 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ <'pull with rebase'>)}]
                          action: [
                            (command.Simple
                              words: [
                                {<gettextln>}
                                {(DQ <'Cannot pull with rebase: You have unstaged changes.'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [1208 1211 1224 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.Simple
                              words: [
                                {<eval_gettextln>}
                                {
                                  (DQ <'Cannot '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'action: You have unstaged changes.'>
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                          ]
                          spids: [1227 1228 1243 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [1249]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1143 1156]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<git>} {<diff-index>} {<--cached>} {<--quiet>} {<--ignore-submodules>} 
                              {<HEAD>} {<-->}
                            )
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<test>} {($ Id.VSub_DollarName err)} {<Id.Lit_Equals '='>} {<0>})
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                  spids: [1293]
                                )
                              ]
                              redirects: []
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName action))}
                              arms: [
                                (case_arm
                                  pat_list: [{<rebase>}]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<gettextln>}
                                        {
                                          (DQ 
                                            <
'Cannot rebase: Your index contains uncommitted changes.'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [1306 1307 1320 -1]
                                )
                                (case_arm
                                  pat_list: [{(DQ <'pull with rebase'>)}]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<gettextln>}
                                        {
                                          (DQ 
                                            <
'Cannot pull with rebase: Your index contains uncommitted changes.'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [1323 1326 1339 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {<eval_gettextln>}
                                        {
                                          (DQ <'Cannot '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'action: Your index contains uncommitted changes.'>
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      more_env: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [1342 1343 1358 -1]
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1279 1290]
                        )
                      ]
                      else_action: [
                        (command.Simple
                          words: [
                            {<gettextln>}
                            {(DQ <'Additionally, your index contains uncommitted changes.'>)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [1380]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1257 1276]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {($ Id.VSub_DollarName err)} {<Id.Lit_Equals '='>} {<1>})]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number 2))})
                        (command.Simple
                          words: [{<echo>} {(DQ ($ Id.VSub_Number 2))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1388 1399]
                )
              ]
              else_action: []
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: pick_ident_script
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: (condition.Shell commands:[(C {<test>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>})])
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lid='> name:lid)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 1)}
                              spids: [1481]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uid='> name:uid)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 1)}
                              spids: [1488]
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>})
                    (C {<printf>} {(SQ <'%s'>)} 
                      {
                        (DQ <'\n'> <'\t\t/^'> ($ Id.VSub_DollarName lid) <' /{\n'> <'\t\t\ts/\'/\''> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\\\'>
                            ch: '\\'
                          ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\'\'/g\n'> <'\t\t\th\n'> 
                          <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '>
                        ) (SQ <'\\([^<]*\\) <[^>]*> .*$/\\1/'>) 
                        (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_NAME=\'&\'/p\n'> <'\n'> 
                          <'\t\t\tg\n'> <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '>
                        ) (SQ <'[^<]* <\\([^>]*\\)> .*$/\\1/'>) 
                        (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_EMAIL=\'&\'/p\n'> <'\n'> 
                          <'\t\t\tg\n'> <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '>
                        ) (SQ <'[^<]* <[^>]*> \\(.*\\)$/@\\1/'>) 
                        (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_DATE=\'&\'/p\n'> 
                          <'\t\t}\n'> <'\t\t'>
                        )
                      }
                    )
                  ]
                )
              redirects: []
            )
            (C {<echo>} {(SQ <'/^$/q'>)})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: parse_ident_from_commit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              words: [
                {<sed>}
                {<-ne>}
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: (C {<pick_ident_script>} {(DQ ($ Id.VSub_At '@'))})
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              more_env: [
                (env_pair name:LANG val:{<C>} spids:[1588])
                (env_pair name:LC_ALL val:{<C>} spids:[1591])
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: get_author_ident_from_commit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'encoding='> name:encoding)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.AndOr
                            ops: [Id.Op_DPipe]
                            children: [
                              (C {<git>} {<config>} {<i18n.commitencoding>})
                              (C {<echo>} {<UTF-8>})
                            ]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [1625]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<git>} {<show>} {<-s>} {<--pretty> <Id.Lit_Equals '='> <raw>} 
                  {<--encoding> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName encoding))} {(DQ ($ Id.VSub_Number 1))} {<-->}
                )
                (C {<parse_ident_from_commit>} {<author>} {<AUTHOR>})
              ]
              negated: F
              stderr_indices: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: clear_local_git_env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<unset>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<git>} {<rev-parse>} {<--local-env-vars>})
                  right: <Id.Eof_RParen _>
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: create_virtual_base
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz0='> name:sz0)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [{<wc>} {<-c>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {(DQ ($ Id.VSub_Number 1))}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [1717]
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (C {<Id.Lit_At '@'> <Id.Lit_Splice '@DIFF'> <Id.Lit_At '@'> <Id.Lit_At '@'>} {<-u>} 
                  {<'-La/'> (DQ ($ Id.VSub_Number 1))} {<'-Lb/'> (DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))}
                )
                (C {<git>} {<apply>} {<--no-add>})
              ]
              negated: F
              stderr_indices: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz1='> name:sz1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [{<wc>} {<-c>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Less '<'>
                                loc: (redir_loc.Fd fd:0)
                                arg: {(DQ ($ Id.VSub_Number 1))}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [1764]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {<expr>}
                    {($ Id.VSub_DollarName sz0)}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\<'> ch:'<')}
                    {($ Id.VSub_DollarName sz1)}
                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'> ch:'*')}
                    {<2>}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
                (command.Simple
                  words: [{<Id.Lit_Colon ':'>}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 1))}
                    )
                  ]
                  more_env: []
                  do_fork: T
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<uname>} {<-s>})
            right: <Id.Eof_RParen _>
          )
        }
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <MINGW> <Id.Lit_Star '*'>}]
          action: [
            (command.ShFunction
              name: sort
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [(C {<'/usr/bin/sort'>} {(DQ ($ Id.VSub_At '@'))})]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShFunction
              name: find
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [(C {<'/usr/bin/find'>} {(DQ ($ Id.VSub_At '@'))})]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShFunction
              name: pwd
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [(C {<builtin>} {<pwd>} {<-W>})]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
            (command.ShFunction
              name: is_absolute_path
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <'/'> 
                              (word_part.EscapedLiteral
                                token: <Id.Lit_EscapedChar '\\\\'>
                                ch: '\\'
                              ) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                            }
                            {<Id.Lit_LBracket '['> <A-Za-z> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> 
                              <Id.Lit_Star '*'>
                            }
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [1912 1925 1932 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
          ]
          spids: [1827 1830 1946 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShFunction
              name: is_absolute_path
              body: 
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [{<'/'> <Id.Lit_Star '*'>}]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [1969 1971 1978 -1]
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
            )
          ]
          spids: [1948 1949 -1 1991]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: git_dir_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_DIR='> name:GIT_DIR)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<git>} {<rev-parse>} {<--git-dir>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [2008]
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName SUBDIRECTORY_OK))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<test>} {<-z>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<git>} {<rev-parse>} {<--show-cdup>})
                                right: <Id.Eof_RParen _>
                              )
                            )
                          }
                        )
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exit='> name:exit)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '?')}
                                  spids: [2057]
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              words: [
                                {<gettextln>}
                                {
                                  (DQ 
                                    <
'You need to run this command from the toplevel of the working tree.'
                                    >
                                  )
                                }
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              more_env: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {($ Id.VSub_DollarName exit)}
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                      ]
                    )
                  ]
                  spids: [2022 2035]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_DIR))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_DIR='> name:GIT_DIR)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.AndOr
                                ops: [Id.Op_DAmp]
                                children: [(C {<cd>} {(DQ ($ Id.VSub_DollarName GIT_DIR))}) (C {<pwd>})]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [2092]
                    )
                  ]
                  redirects: []
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      words: [
                        {<gettextln>}
                        {(DQ <'Unable to determine absolute path of git directory'>)}
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
            )
            (C {<Id.Lit_Colon ':'>} 
              {
                (DQ 
                  (braced_var_sub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name GIT_OBJECT_DIRECTORY>
                    var_name: GIT_OBJECT_DIRECTORY
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_Equals _>
                        arg_word: 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<git>} {<rev-parse>} {<--git-path>} {<objects>})
                                right: <Id.Eof_RParen _>
                              )
                            )
                          }
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                )
              }
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName NONGIT_OK))})]
            )
          action: [(C {<git_dir_init>})]
          spids: [2151 2161]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShFunction
      name: peel_committish
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Colon ':'> <'/'> <Id.Lit_Star '*'>}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'peeltmp='> name:peeltmp)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<git>} {<rev-parse>} {<--verify>} {(DQ ($ Id.VSub_Number 1))})
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                              spids: [2192]
                            )
                          ]
                          redirects: []
                        )
                        (C {<git>} {<rev-parse>} {<--verify>} {(DQ (${ Id.VSub_Name peeltmp) <'^0'>)})
                      ]
                    )
                  ]
                  spids: [2186 2189 2222 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<git>} {<rev-parse>} {<--verify>} {(DQ (${ Id.VSub_Number 1) <'^0'>)})]
                  spids: [2225 2226 2243 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
  ]
)