(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'dashless='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'dashless='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dashless='> name:dashless)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <basename>
                        more_env: []
                        words: [{<basename>} {(DQ ($ Id.VSub_Number 0))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <sed>
                        more_env: []
                        words: [{<sed>} {<-e>} {(SQ <'s/-/ /'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'USAGE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'USAGE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'[--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]\n'
                > <'   or: '> ($ Id.VSub_DollarName dashless) 
                <' [--quiet] status [--cached] [--recursive] [--] [<path>...]\n'> <'   or: '> ($ Id.VSub_DollarName dashless) <' [--quiet] init [--] [<path>...]\n'> <'   or: '> 
                ($ Id.VSub_DollarName dashless) <' [--quiet] deinit [-f|--force] (--all| [--] <path>...)\n'> <'   or: '> 
                ($ Id.VSub_DollarName dashless) 
                <
' [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]\n'
                > <'   or: '> ($ Id.VSub_DollarName dashless) 
                <
' [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]\n'
                > <'   or: '> ($ Id.VSub_DollarName dashless) <' [--quiet] foreach [--recursive] <command>\n'> <'   or: '> 
                ($ Id.VSub_DollarName dashless) <' [--quiet] sync [--recursive] [--] [<path>...]'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OPTIONS_SPEC='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OPTIONS_SPEC='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIONS_SPEC='> name:OPTIONS_SPEC)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SUBDIRECTORY_OK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SUBDIRECTORY_OK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBDIRECTORY_OK='> name:SUBDIRECTORY_OK)
          op: assign_op.Equal
          rhs: {<Yes>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<git-sh-setup>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<git-parse-remote>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <require_work_tree>
      more_env: []
      words: [{<require_work_tree>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'wt_prefix='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'wt_prefix='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'wt_prefix='> name:wt_prefix)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [{<git>} {<rev-parse>} {<--show-prefix>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <cd_to_toplevel>
      more_env: []
      words: [{<cd_to_toplevel>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [
        {<Id.Lit_Colon ':'>}
        {
          (BracedVarSub
            left: <Id.Left_DollarBrace '${'>
            token: <Id.VSub_Name GIT_ALLOW_PROTOCOL>
            var_name: GIT_ALLOW_PROTOCOL
            suffix_op: (suffix_op.Unary op:<Id.VTest_Equals _> arg_word:{<'file:git:http:https:ssh'>})
            right: <Id.Right_DollarBrace '}'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<GIT_ALLOW_PROTOCOL>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'command='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'command='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'branch='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'branch='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'force='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'force='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'reference='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'reference='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reference='> name:reference)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'cached='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'cached='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cached='> name:cached)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'recursive='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'recursive='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'recursive='> name:recursive)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'init='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'init='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'init='> name:init)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'files='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'files='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'remote='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'remote='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remote='> name:remote)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'nofetch='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'nofetch='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nofetch='> name:nofetch)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'update='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'update='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'update='> name:update)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'prefix='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'prefix='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'custom_name='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'custom_name='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'custom_name='> name:custom_name)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'depth='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'depth='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'progress='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'progress='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'progress='> name:progress)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <die_if_unmatched>
      name: die_if_unmatched
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {(DQ ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <'#unmatched'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: 
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Number 2>
                            var_name: 2
                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<1>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                    )
                  ]
                  spids: [158 173]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_submodule_config>
      name: get_submodule_config
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'name='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'name='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'option='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'option='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'option='> name:option)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'default='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'default='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'default='> name:default)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 3))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'value='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'value='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'value='> name:value)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [
                              {<git>}
                              {<config>}
                              {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.> 
                                (DQ ($ Id.VSub_DollarName option))
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName value))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'value='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'value='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'value='> name:value)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [
                                      {<git>}
                                      {<config>}
                                      {<-f>}
                                      {<.gitmodules>}
                                      {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.> 
                                        (DQ ($ Id.VSub_DollarName option))
                                      }
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [272 283]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [
                {<printf>}
                {(SQ <'%s'>)}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name value>
                      var_name: value
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VTest_ColonHyphen _>
                          arg_word: {($ Id.VSub_DollarName default)}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <isnumber>
      name: isnumber
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'n='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'n='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (word_part.ArithSub
                            left: <Id.Left_DollarDParen '$(('>
                            anode: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Plus
                                left: {($ Id.VSub_Number 1)}
                                right: {<Id.Lit_Digits 0>}
                              )
                            right: <Id.Right_DollarDParen _>
                          )
                        }
                    )
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {(DQ ($ Id.VSub_DollarName n))}
                    {<Id.Lit_Equals '='>}
                    {(DQ ($ Id.VSub_Number 1))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <sanitize_submodule_env>
      name: sanitize_submodule_env
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'save_config='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'save_config='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'save_config='> name:save_config)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName GIT_CONFIG_PARAMETERS)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <clear_local_git_env>
              more_env: []
              words: [{<clear_local_git_env>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'GIT_CONFIG_PARAMETERS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'GIT_CONFIG_PARAMETERS='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'GIT_CONFIG_PARAMETERS='>
                      name: GIT_CONFIG_PARAMETERS
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName save_config)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<GIT_CONFIG_PARAMETERS>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_add>
      name: cmd_add
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'reference_path='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'reference_path='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reference_path='> name:reference_path)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-b>
                          pattern: (pat.Words words:[{<-b>} {<--branch>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'branch='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'branch='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-f>
                          pattern: (pat.Words words:[{<-f>} {<--force>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'force='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'force='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--reference>
                          pattern: (pat.Words words:[{<--reference>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'reference_path='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'reference_path='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'reference_path='>
                                      name: reference_path
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--reference>
                          pattern: 
                            (pat.Words
                              words: [{<--reference> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'reference_path='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'reference_path='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'reference_path='>
                                      name: reference_path
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_Pound '#'>
                                              arg_word: {<'--reference='>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--name>
                          pattern: (pat.Words words:[{<--name>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'custom_name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'custom_name='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'custom_name='>
                                      name: custom_name
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--depth>
                          pattern: (pat.Words words:[{<--depth>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'depth='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'depth='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'--depth='> ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--depth>
                          pattern: 
                            (pat.Words
                              words: [{<--depth> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'depth='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'depth='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName reference_path))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <is_absolute_path>
                          more_env: []
                          words: [{<is_absolute_path>} {(DQ ($ Id.VSub_DollarName reference_path))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'reference_path='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'reference_path='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'reference_path='>
                                  name: reference_path
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName wt_prefix) 
                                    ($ Id.VSub_DollarName reference_path)
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'reference='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'reference='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reference='> name:reference)
                          op: assign_op.Equal
                          rhs: {(DQ <'--reference='> ($ Id.VSub_DollarName reference_path))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [699 710]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'repo='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'repo='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'repo='> name:repo)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sm_path='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sm_path='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_path='> name:sm_path)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sm_path='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sm_path='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_path='> name:sm_path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <printf>
                                        more_env: []
                                        words: [
                                          {<printf>}
                                          {(SQ <'%s\\n'>)}
                                          {(DQ ($ Id.VSub_DollarName repo))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <sed>
                                        more_env: []
                                        words: [
                                          {<sed>}
                                          {<-e>}
                                          {(SQ <'s|/$||'>)}
                                          {<-e>}
                                          {(SQ <'s|:*/*\\.git$||'>)}
                                          {<-e>}
                                          {(SQ <'s|.*[/:]||g'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [750 761]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName repo))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [805 826]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <is_absolute_path>
                  more_env: []
                  words: [{<is_absolute_path>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'sm_path='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'sm_path='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_path='> name:sm_path)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName wt_prefix) ($ Id.VSub_DollarName sm_path))}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName repo))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <'./'>
                  pattern: (pat.Words words:[{<'./'> <Id.Lit_Star '*'>} {<'../'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName wt_prefix))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {
                                          (DQ 
                                            <
'Relative path can only be used from the toplevel of the working tree'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'realrepo='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'realrepo='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realrepo='> name:realrepo)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<submodule--helper>}
                                          {<resolve-relative-url>}
                                          {(DQ ($ Id.VSub_DollarName repo))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>}
                        {<'/'> <Id.Lit_Star '*'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'realrepo='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'realrepo='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realrepo='> name:realrepo)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName repo)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'repo URL: \''> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'repo\' must be absolute or begin with ./|../'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sm_path='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sm_path='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_path='> name:sm_path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <printf>
                                more_env: []
                                words: [
                                  {<printf>}
                                  {(SQ <'%s/\\n'>)}
                                  {(DQ ($ Id.VSub_DollarName sm_path))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [
                                  {<sed>}
                                  {<-e>}
                                  {
                                    (SQ <'\n'> <'\t\t\ts|//*|/|g\n'> <'\t\t\ts|^\\(\\./\\)*||\n'> 
                                      <'\t\t\ts|/\\(\\./\\)*|/|g\n'> <'\t\t\t:start\n'> <'\t\t\ts|\\([^/]*\\)/\\.\\./||\n'> <'\t\t\ttstart\n'> <'\t\t\ts|/*$||\n'> <'\t\t'>
                                    )
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<ls-files>} {<--error-unmatch>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                    (Redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'\''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'sm_path\' already exists in the index'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName force))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<add>}
                                    {<--dry-run>}
                                    {<--ignore-missing>}
                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                    (Redir
                                      op: <Id.Redir_GreatAnd '2>&'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<1>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <eval_gettextln>
                      more_env: []
                      words: [
                        {<eval_gettextln>}
                        {
                          (DQ <'The following path is ignored by one of your .gitignore files:\n'> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) <'sm_path\n'> <'Use -f if you really want to add it.'>
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1046 1080]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName custom_name))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sm_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sm_name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_name='> name:sm_name)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName custom_name))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1105 1116]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'sm_name='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'sm_name='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sm_name='> name:sm_name)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName sm_path))}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-e>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<-d>}
                                        {(DQ ($ Id.VSub_DollarName sm_path)) <'/.git'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<-f>}
                                        {(DQ ($ Id.VSub_DollarName sm_path)) <'/.git'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <eval_gettextln>
                              more_env: []
                              words: [
                                {<eval_gettextln>}
                                {
                                  (DQ <'Adding existing repo at \''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'sm_path\' to the index'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1156 1179]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <eval_gettext>
                                      more_env: []
                                      words: [
                                        {<eval_gettext>}
                                        {
                                          (DQ <'\''> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'sm_path\' already exists and is not a valid git repo'>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1142 1153]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {<-d>}
                                {(DQ <'.git/modules/'> ($ Id.VSub_DollarName sm_name))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName force))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <eval_gettextln>
                                  more_env: []
                                  words: [
                                    {<eval_gettextln>}
                                    {
                                      (DQ <'A git directory for \''> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'sm_name\' is found locally with remote(s):'>
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: [
                                        (EnvPair
                                          left: <Id.Lit_VarLike 'GIT_DIR='>
                                          name: GIT_DIR
                                          val: {(DQ <'.git/modules/'> ($ Id.VSub_DollarName sm_name))}
                                        )
                                        (EnvPair
                                          left: <Id.Lit_VarLike 'GIT_WORK_TREE='>
                                          name: GIT_WORK_TREE
                                          val: {<.>}
                                        )
                                      ]
                                      words: [{<git>} {<remote>} {<-v>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [{<grep>} {(SQ <'(fetch)'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <sed>
                                      more_env: []
                                      words: [
                                        {<sed>}
                                        {<-e>}
                                        {<s> <Id.Lit_Comma ','> <Id.Lit_Other '^'> <Id.Lit_Comma ','> 
                                          (DQ <'  '>) <Id.Lit_Comma ','>
                                        }
                                        {<-e>}
                                        {<s> <Id.Lit_Comma ','> (SQ <' (fetch)'>) <Id.Lit_Comma ','> 
                                          <Id.Lit_Comma ','>
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                )
                                (command.Simple
                                  blame_tok: <die>
                                  more_env: []
                                  words: [
                                    {<die>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval_gettextln>
                                              more_env: []
                                              words: [
                                                {<eval_gettextln>}
                                                {
                                                  (DQ 
                                                    <
'If you want to reuse this local git directory instead of cloning again from\n'
                                                    > <'  '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'realrepo\n'> 
                                                    <
'use the \'--force\' option. If the local git directory is not the correct repo\n'
                                                    > <'or you are unsure what this means choose another name with the \'--name\' option.'>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [1231 1242]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.Simple
                              blame_tok: <eval_gettextln>
                              more_env: []
                              words: [
                                {<eval_gettextln>}
                                {
                                  (DQ <'Reactivating local git directory for submodule \''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'sm_name\'.'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      spids: [1216 1228]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<submodule--helper>}
                        {<clone>}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name GIT_QUIET>
                            var_name: GIT_QUIET
                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<--quiet>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                        {<--prefix>}
                        {(DQ ($ Id.VSub_DollarName wt_prefix))}
                        {<--path>}
                        {(DQ ($ Id.VSub_DollarName sm_path))}
                        {<--name>}
                        {(DQ ($ Id.VSub_DollarName sm_name))}
                        {<--url>}
                        {(DQ ($ Id.VSub_DollarName realrepo))}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name reference>
                            var_name: reference
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VTest_ColonPlus _>
                                arg_word: {(DQ ($ Id.VSub_DollarName reference))}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name depth>
                            var_name: depth
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VTest_ColonPlus _>
                                arg_word: {(DQ ($ Id.VSub_DollarName depth))}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.AndOr
                  children: [
                    (command.Subshell
                      left: <Id.Op_LParen _>
                      child: 
                        (command.CommandList
                          children: [
                            (command.Simple
                              blame_tok: <sanitize_submodule_env>
                              more_env: []
                              words: [{<sanitize_submodule_env>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <cd>
                                  more_env: []
                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Case
                                  case_kw: <Id.KW_Case case>
                                  to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName branch))})
                                  arms_start: <Id.KW_In in>
                                  arms: [
                                    (CaseArm
                                      left: <Id.Left_SingleQuote '\''>
                                      pattern: (pat.Words words:[{(SQ )}])
                                      middle: <Id.Right_CasePat _>
                                      action: [
                                        (command.Simple
                                          blame_tok: <git>
                                          more_env: []
                                          words: [{<git>} {<checkout>} {<-f>} {<-q>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                    (CaseArm
                                      left: <Id.Lit_QMark '?'>
                                      pattern: 
                                        (pat.Words
                                          words: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]
                                        )
                                      middle: <Id.Right_CasePat _>
                                      action: [
                                        (command.Simple
                                          blame_tok: <git>
                                          more_env: []
                                          words: [
                                            {<git>}
                                            {<checkout>}
                                            {<-f>}
                                            {<-q>}
                                            {<-B>}
                                            {(DQ ($ Id.VSub_DollarName branch))}
                                            {(DQ <'origin/'> ($ Id.VSub_DollarName branch))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                  ]
                                  arms_end: <Id.KW_Esac esac>
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                        )
                      right: <Id.Right_Subshell _>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Unable to checkout submodule \''> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'sm_path\''>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<config>}
                {<submodule.> (DQ ($ Id.VSub_DollarName sm_name)) <.url>}
                {(DQ ($ Id.VSub_DollarName realrepo))}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<add>}
                    {($ Id.VSub_DollarName force)}
                    {(DQ ($ Id.VSub_DollarName sm_path))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Failed to add submodule \''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'sm_path\''>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<config>}
                    {<-f>}
                    {<.gitmodules>}
                    {<submodule.> (DQ ($ Id.VSub_DollarName sm_name)) <.path>}
                    {(DQ ($ Id.VSub_DollarName sm_path))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<config>}
                    {<-f>}
                    {<.gitmodules>}
                    {<submodule.> (DQ ($ Id.VSub_DollarName sm_name)) <.url>}
                    {(DQ ($ Id.VSub_DollarName repo))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName branch))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<config>}
                            {<-f>}
                            {<.gitmodules>}
                            {<submodule.> (DQ ($ Id.VSub_DollarName sm_name)) <.branch>}
                            {(DQ ($ Id.VSub_DollarName branch))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [1584 1595]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<add>} {<--force>} {<.gitmodules>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Failed to register submodule \''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'sm_path\''>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_foreach>
      name: cmd_foreach
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--recursive>
                          pattern: (pat.Words words:[{<--recursive>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recursive='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recursive='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recursive='>
                                      name: recursive
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'toplevel='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'toplevel='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'toplevel='> name:toplevel)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <pwd>
                            more_env: []
                            words: [{<pwd>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <exec>
              more_env: []
              words: [{<exec>}]
              redirects: [(Redir op:<Id.Redir_LessAnd '3<&'> loc:(redir_loc.Fd fd:3) arg:{<0>})]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<submodule--helper>}
                            {<list>}
                            {<--prefix>}
                            {(DQ ($ Id.VSub_DollarName wt_prefix))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'#unmatched'>)} {($ Id.VSub_QMark '?')}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<mode>} {<sha1>} {<stage>} {<sm_path>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <die_if_unmatched>
                          more_env: []
                          words: [
                            {<die_if_unmatched>}
                            {(DQ ($ Id.VSub_DollarName mode))}
                            {(DQ ($ Id.VSub_DollarName sha1))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<-e>}
                                        {(DQ ($ Id.VSub_DollarName sm_path)) <'/.git'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'displaypath='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'displaypath='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'displaypath='>
                                          name: displaypath
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<submodule--helper>}
                                                  {<relative-path>}
                                                  {
                                                    (DQ ($ Id.VSub_DollarName prefix) 
                                                      ($ Id.VSub_DollarName sm_path)
                                                    )
                                                  }
                                                  {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <say>
                                  more_env: []
                                  words: [
                                    {<say>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval_gettext>
                                              more_env: []
                                              words: [
                                                {<eval_gettext>}
                                                {
                                                  (DQ <'Entering \''> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <'displaypath\''>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'name='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'name='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<submodule--helper>}
                                                  {<name>}
                                                  {(DQ ($ Id.VSub_DollarName sm_path))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.AndOr
                                  children: [
                                    (command.Subshell
                                      left: <Id.Op_LParen _>
                                      child: 
                                        (command.CommandList
                                          children: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'prefix='>
                                                      name: prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName prefix) 
                                                        ($ Id.VSub_DollarName sm_path) <'/'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Simple
                                              blame_tok: <sanitize_submodule_env>
                                              more_env: []
                                              words: [{<sanitize_submodule_env>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <cd>
                                                  more_env: []
                                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'sm_path='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'sm_path='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'sm_path='>
                                                          name: sm_path
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (CommandSub
                                                            left_token: <Id.Left_DollarParen '$('>
                                                            child: 
                                                              (command.Simple
                                                                blame_tok: <git>
                                                                more_env: []
                                                                words: [
                                                                  {<git>}
                                                                  {<submodule--helper>}
                                                                  {<relative-path>}
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName sm_path)
                                                                    )
                                                                  }
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName wt_prefix)
                                                                    )
                                                                  }
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            right: <Id.Eof_RParen _>
                                                          )
                                                        }
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'path='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'path='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'path='>
                                                          name: path
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {($ Id.VSub_DollarName sm_path)}
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                                (command.If
                                                  if_kw: <Id.KW_If if>
                                                  arms: [
                                                    (IfArm
                                                      keyword: <Id.KW_If if>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Simple
                                                              blame_tok: <test>
                                                              more_env: []
                                                              words: [
                                                                {<test>}
                                                                {($ Id.VSub_Pound '#')}
                                                                {<-eq>}
                                                                {<1>}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                        )
                                                      then_kw: <Id.KW_Then then>
                                                      action: [
                                                        (command.Simple
                                                          blame_tok: <eval>
                                                          more_env: []
                                                          words: [{<eval>} {(DQ ($ Id.VSub_Number 1))}]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                      spids: [1954 1965]
                                                    )
                                                  ]
                                                  else_kw: <Id.KW_Else else>
                                                  else_action: [
                                                    (command.Simple
                                                      blame_tok: <Id.Left_DoubleQuote '"'>
                                                      more_env: []
                                                      words: [{(DQ ($ Id.VSub_At '@'))}]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  fi_kw: <Id.KW_Fi fi>
                                                  redirects: []
                                                )
                                                (command.If
                                                  if_kw: <Id.KW_If if>
                                                  arms: [
                                                    (IfArm
                                                      keyword: <Id.KW_If if>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Simple
                                                              blame_tok: <test>
                                                              more_env: []
                                                              words: [
                                                                {<test>}
                                                                {<-n>}
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName recursive)
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                        )
                                                      then_kw: <Id.KW_Then then>
                                                      action: [
                                                        (command.Simple
                                                          blame_tok: <cmd_foreach>
                                                          more_env: []
                                                          words: [
                                                            {<cmd_foreach>}
                                                            {(DQ <--recursive>)}
                                                            {(DQ ($ Id.VSub_At '@'))}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                      spids: [1988 1999]
                                                    )
                                                  ]
                                                  else_action: []
                                                  fi_kw: <Id.KW_Fi fi>
                                                  redirects: []
                                                )
                                              ]
                                              ops: [
                                                <Id.Op_DAmp _>
                                                <Id.Op_DAmp _>
                                                <Id.Op_DAmp _>
                                                <Id.Op_DAmp _>
                                              ]
                                            )
                                          ]
                                        )
                                      right: <Id.Right_Subshell _>
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_LessAnd '<&'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {<3>}
                                        )
                                        (Redir
                                          op: <Id.Redir_LessAnd '3<&'>
                                          loc: (redir_loc.Fd fd:3)
                                          arg: {<->}
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      blame_tok: <die>
                                      more_env: []
                                      words: [
                                        {<die>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'Stopping at \''> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'displaypath\'; script returned non-zero status.'>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              spids: [1838 1850]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_init>
      name: cmd_init
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name wt_prefix>
                    var_name: wt_prefix
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonPlus _>
                        arg_word: {<'-C '> (DQ ($ Id.VSub_DollarName wt_prefix))}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {<submodule--helper>}
                {<init>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name GIT_QUIET>
                    var_name: GIT_QUIET
                    suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<--quiet>})
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name prefix>
                    var_name: prefix
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonPlus _>
                        arg_word: {<'--prefix '> (DQ ($ Id.VSub_DollarName prefix))}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_deinit>
      name: cmd_deinit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'deinit_all='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'deinit_all='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'deinit_all='> name:deinit_all)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-f>
                          pattern: (pat.Words words:[{<-f>} {<--force>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'force='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'force='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--all>
                          pattern: (pat.Words words:[{<--all>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'deinit_all='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'deinit_all='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'deinit_all='>
                                      name: deinit_all
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName deinit_all))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {(DQ ($ Id.VSub_Pound '#'))} {<-ne>} {<0>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {(DQ <'pathspec and --all are incompatible'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2320 2343]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.Lit_Equals '='>} {<0>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName deinit_all))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ 
                                        <
'Use \'--all\' if you really want to deinitialize all submodules'
                                        >
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2368 2389]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<submodule--helper>}
                            {<list>}
                            {<--prefix>}
                            {(DQ ($ Id.VSub_DollarName wt_prefix))}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'#unmatched'>)} {($ Id.VSub_QMark '?')}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<mode>} {<sha1>} {<stage>} {<sm_path>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <die_if_unmatched>
                          more_env: []
                          words: [
                            {<die_if_unmatched>}
                            {(DQ ($ Id.VSub_DollarName mode))}
                            {(DQ ($ Id.VSub_DollarName sha1))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'name='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<submodule--helper>}
                                              {<name>}
                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'displaypath='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'displaypath='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'displaypath='>
                                  name: displaypath
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<submodule--helper>}
                                          {<relative-path>}
                                          {(DQ ($ Id.VSub_DollarName sm_path))}
                                          {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {<-d>}
                                                {(DQ ($ Id.VSub_DollarName sm_path) <'/.git'>)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <die>
                                          more_env: []
                                          words: [
                                            {<die>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <eval_gettext>
                                                      more_env: []
                                                      words: [
                                                        {<eval_gettext>}
                                                        {
                                                          (DQ <'Submodule work tree \''> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\$'>
                                                              ch: '$'
                                                            ) <'displaypath\' contains a .git directory\n'> 
                                                            <
'(use \'rm -rf\' if you really want to remove it including all of its history)'
                                                            >
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [2532 2544]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName force))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <git>
                                              more_env: []
                                              words: [
                                                {<git>}
                                                {<rm>}
                                                {<-qn>}
                                                {(DQ ($ Id.VSub_DollarName sm_path))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <die>
                                              more_env: []
                                              words: [
                                                {<die>}
                                                {
                                                  (DQ 
                                                    (CommandSub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: 
                                                        (command.Simple
                                                          blame_tok: <eval_gettext>
                                                          more_env: []
                                                          words: [
                                                            {<eval_gettext>}
                                                            {
                                                              (DQ <'Submodule work tree \''> 
                                                                (word_part.EscapedLiteral
                                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                                  ch: '$'
                                                                ) <'displaypath\' contains local modifications; use \'-f\' to discard them'>
                                                              )
                                                            }
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      right: <Id.Eof_RParen _>
                                                    )
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      ]
                                      spids: [2568 2579]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <rm>
                                      more_env: []
                                      words: [{<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <say>
                                      more_env: []
                                      words: [
                                        {<say>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'Cleared directory \''> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'displaypath\''>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <say>
                                      more_env: []
                                      words: [
                                        {<say>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'Could not remove submodule work tree \''> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'displaypath\''>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                                )
                              ]
                              spids: [2514 2525]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <say>
                              more_env: []
                              words: [
                                {<say>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <eval_gettext>
                                          more_env: []
                                          words: [
                                            {<eval_gettext>}
                                            {
                                              (DQ <'Could not create empty submodule directory \''> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <'displaypath\''>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<-n>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <git>
                                                  more_env: []
                                                  words: [
                                                    {<git>}
                                                    {<config>}
                                                    {<--get-regexp>}
                                                    {<submodule.> 
                                                      (DQ ($ Id.VSub_DollarName name) 
                                                        <Id.Lit_BadBackslash '\\'> <.>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'url='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'url='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<config>}
                                                  {<submodule.> (DQ ($ Id.VSub_DollarName name)) 
                                                    <.url>
                                                  }
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<config>}
                                        {<--remove-section>}
                                        {<submodule.> (DQ ($ Id.VSub_DollarName name))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '2>'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <say>
                                      more_env: []
                                      words: [
                                        {<say>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'Submodule \''> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'name\' ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                        <'url) unregistered for path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'displaypath\''>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                              ]
                              spids: [2688 2712]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <is_tip_reachable>
      name: is_tip_reachable
      body: 
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <sanitize_submodule_env>
                  more_env: []
                  words: [{<sanitize_submodule_env>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'rev='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'rev='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rev='> name:rev)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-list>}
                                  {<-n>}
                                  {<1>}
                                  {(DQ ($ Id.VSub_Number 2))}
                                  {<--not>}
                                  {<--all>}
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName rev))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          right: <Id.Right_Subshell _>
          redirects: []
        )
    )
    (command.ShFunction
      name_tok: <fetch_in_submodule>
      name: fetch_in_submodule
      body: 
        (command.Subshell
          left: <Id.Op_LParen _>
          child: 
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <sanitize_submodule_env>
                  more_env: []
                  words: [{<sanitize_submodule_env>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cd>
                  more_env: []
                  words: [{<cd>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.Left_SingleQuote '\''>
                      pattern: (pat.Words words:[{(SQ )}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<fetch>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<fetch>}
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <get_default_remote>
                                    more_env: []
                                    words: [{<get_default_remote>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          right: <Id.Right_Subshell _>
          redirects: []
        )
    )
    (command.ShFunction
      name_tok: <cmd_update>
      name: cmd_update
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--progress>
                          pattern: (pat.Words words:[{<--progress>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'progress='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'progress='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'progress='>
                                      name: progress
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <--progress>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-i>
                          pattern: (pat.Words words:[{<-i>} {<--init>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'init='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'init='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'init='> name:init)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--remote>
                          pattern: (pat.Words words:[{<--remote>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'remote='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'remote='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remote='> name:remote)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-N>
                          pattern: (pat.Words words:[{<-N>} {<--no-fetch>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'nofetch='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'nofetch='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'nofetch='>
                                      name: nofetch
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-f>
                          pattern: (pat.Words words:[{<-f>} {<--force>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'force='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'force='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-r>
                          pattern: (pat.Words words:[{<-r>} {<--rebase>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'update='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'update='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'update='> name:update)
                                  op: assign_op.Equal
                                  rhs: {(DQ <rebase>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--reference>
                          pattern: (pat.Words words:[{<--reference>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'reference='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'reference='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'reference='>
                                      name: reference
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'--reference='> ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--reference>
                          pattern: 
                            (pat.Words
                              words: [{<--reference> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'reference='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'reference='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'reference='>
                                      name: reference
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-m>
                          pattern: (pat.Words words:[{<-m>} {<--merge>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'update='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'update='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'update='> name:update)
                                  op: assign_op.Equal
                                  rhs: {(DQ <merge>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--recursive>
                          pattern: (pat.Words words:[{<--recursive>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recursive='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recursive='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recursive='>
                                      name: recursive
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--checkout>
                          pattern: (pat.Words words:[{<--checkout>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'update='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'update='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'update='> name:update)
                                  op: assign_op.Equal
                                  rhs: {(DQ <checkout>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--recommend-shallow>
                          pattern: (pat.Words words:[{<--recommend-shallow>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recommend_shallow='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recommend_shallow='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recommend_shallow='>
                                      name: recommend_shallow
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <--recommend-shallow>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--no-recommend-shallow>
                          pattern: (pat.Words words:[{<--no-recommend-shallow>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recommend_shallow='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recommend_shallow='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recommend_shallow='>
                                      name: recommend_shallow
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <--no-recommend-shallow>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--depth>
                          pattern: (pat.Words words:[{<--depth>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'depth='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'depth='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'--depth='> ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--depth>
                          pattern: 
                            (pat.Words
                              words: [{<--depth> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'depth='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'depth='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'depth='> name:depth)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-j>
                          pattern: (pat.Words words:[{<-j>} {<--jobs>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_SingleQuote '\''>
                                  pattern: (pat.Words words:[{(SQ )}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Simple
                                      blame_tok: <usage>
                                      more_env: []
                                      words: [{<usage>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'jobs='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'jobs='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jobs='> name:jobs)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'--jobs='> ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--jobs>
                          pattern: 
                            (pat.Words
                              words: [{<--jobs> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'jobs='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'jobs='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jobs='> name:jobs)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 1)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName init))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <cmd_init>
                          more_env: []
                          words: [{<cmd_init>} {(DQ <-->)} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [3309 3320]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<submodule--helper>}
                            {<update-clone>}
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name GIT_QUIET>
                                var_name: GIT_QUIET
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {<--quiet>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name progress>
                                var_name: progress
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName progress))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name wt_prefix>
                                var_name: wt_prefix
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {<'--prefix '> (DQ ($ Id.VSub_DollarName wt_prefix))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name prefix>
                                var_name: prefix
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: 
                                      {<'--recursive-prefix '> (DQ ($ Id.VSub_DollarName prefix))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name update>
                                var_name: update
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {<'--update '> (DQ ($ Id.VSub_DollarName update))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name reference>
                                var_name: reference
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName reference))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name depth>
                                var_name: depth
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {<'--depth '> (DQ ($ Id.VSub_DollarName depth))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name recommend_shallow>
                                var_name: recommend_shallow
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName recommend_shallow))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name jobs>
                                var_name: jobs
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {($ Id.VSub_DollarName jobs)}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'#unmatched'>)} {($ Id.VSub_QMark '?')}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'err='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'err='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<mode>} {<sha1>} {<stage>} {<just_cloned>} {<sm_path>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <die_if_unmatched>
                              more_env: []
                              words: [
                                {<die_if_unmatched>}
                                {(DQ ($ Id.VSub_DollarName mode))}
                                {(DQ ($ Id.VSub_DollarName sha1))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'name='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'name='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<submodule--helper>}
                                                  {<name>}
                                                  {(DQ ($ Id.VSub_DollarName sm_path))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Exit exit>
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'url='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'url='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<config>}
                                              {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.url>}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {<-z>}
                                                {(DQ ($ Id.VSub_DollarName update))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'update_module='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'update_module='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'update_module='>
                                              name: update_module
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName update)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [3528 3541]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'update_module='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'update_module='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'update_module='>
                                          name: update_module
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<config>}
                                                  {<submodule.> (DQ ($ Id.VSub_DollarName name)) 
                                                    <.update>
                                                  }
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {<-z>}
                                                {(DQ ($ Id.VSub_DollarName update_module))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'update_module='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'update_module='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'update_module='>
                                                  name: update_module
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ <checkout>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [3565 3576]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'displaypath='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'displaypath='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'displaypath='>
                                      name: displaypath
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<submodule--helper>}
                                              {<relative-path>}
                                              {
                                                (DQ ($ Id.VSub_DollarName prefix) 
                                                  ($ Id.VSub_DollarName sm_path)
                                                )
                                              }
                                              {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName just_cloned)}
                                            {<-eq>}
                                            {<1>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'subsha1='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'subsha1='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'subsha1='>
                                              name: subsha1
                                            )
                                          op: assign_op.Equal
                                          rhs: (rhs_word__Empty)
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'update_module='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'update_module='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'update_module='>
                                              name: update_module
                                            )
                                          op: assign_op.Equal
                                          rhs: {<checkout>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [3612 3623]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.AndOr
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'subsha1='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'subsha1='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'subsha1='>
                                              name: subsha1
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.Sentence
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <sanitize_submodule_env>
                                                            more_env: []
                                                            words: [{<sanitize_submodule_env>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        terminator: <Id.Op_Semi _>
                                                      )
                                                      (command.AndOr
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <cd>
                                                            more_env: []
                                                            words: [
                                                              {<cd>}
                                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <git>
                                                            more_env: []
                                                            words: [
                                                              {<git>}
                                                              {<rev-parse>}
                                                              {<--verify>}
                                                              {<HEAD>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_DAmp _>]
                                                      )
                                                    ]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <die>
                                      more_env: []
                                      words: [
                                        {<die>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ 
                                                        <
'Unable to find current revision in submodule path \''
                                                        > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'displaypath\''>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName remote))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'branch='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'branch='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'branch='>
                                              name: branch
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<submodule--helper>}
                                                      {<remote-branch>}
                                                      {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <test>
                                                  more_env: []
                                                  words: [
                                                    {<test>}
                                                    {<-z>}
                                                    {(DQ ($ Id.VSub_DollarName nofetch))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <fetch_in_submodule>
                                                  more_env: []
                                                  words: [
                                                    {<fetch_in_submodule>}
                                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    {($ Id.VSub_DollarName depth)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <die>
                                                  more_env: []
                                                  words: [
                                                    {<die>}
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ 
                                                                    <
'Unable to fetch in submodule path \''
                                                                    > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sm_path\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _>]
                                            )
                                          ]
                                          spids: [3709 3720]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'remote_name='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'remote_name='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'remote_name='>
                                              name: remote_name
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.Sentence
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <sanitize_submodule_env>
                                                            more_env: []
                                                            words: [{<sanitize_submodule_env>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        terminator: <Id.Op_Semi _>
                                                      )
                                                      (command.AndOr
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <cd>
                                                            more_env: []
                                                            words: [
                                                              {<cd>}
                                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <get_default_remote>
                                                            more_env: []
                                                            words: [{<get_default_remote>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_DAmp _>]
                                                      )
                                                    ]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'sha1='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'sha1='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'sha1='>
                                                  name: sha1
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.CommandList
                                                        children: [
                                                          (command.Sentence
                                                            child: 
                                                              (command.Simple
                                                                blame_tok: <sanitize_submodule_env>
                                                                more_env: []
                                                                words: [{<sanitize_submodule_env>}]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            terminator: <Id.Op_Semi _>
                                                          )
                                                          (command.AndOr
                                                            children: [
                                                              (command.Simple
                                                                blame_tok: <cd>
                                                                more_env: []
                                                                words: [
                                                                  {<cd>}
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName sm_path)
                                                                    )
                                                                  }
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                              (command.Simple
                                                                blame_tok: <git>
                                                                more_env: []
                                                                words: [
                                                                  {<git>}
                                                                  {<rev-parse>}
                                                                  {<--verify>}
                                                                  {
                                                                    (DQ (${ Id.VSub_Name remote_name) 
                                                                      <'/'> (${ Id.VSub_Name branch)
                                                                    )
                                                                  }
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            ]
                                                            ops: [<Id.Op_DAmp _>]
                                                          )
                                                        ]
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.Simple
                                          blame_tok: <die>
                                          more_env: []
                                          words: [
                                            {<die>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <eval_gettext>
                                                      more_env: []
                                                      words: [
                                                        {<eval_gettext>}
                                                        {
                                                          (DQ <'Unable to find current '> 
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\$'>
                                                              ch: '$'
                                                            ) <'{remote_name}/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                            <
'{branch} revision in submodule path \''
                                                            > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sm_path\''>
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [3681 3692]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {(DQ ($ Id.VSub_DollarName subsha1))}
                                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                {(DQ ($ Id.VSub_DollarName sha1))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName force))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'subforce='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'subforce='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'subforce='>
                                              name: subforce
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_DollarName force)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.AndOr
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <test>
                                                      more_env: []
                                                      words: [
                                                        {<test>}
                                                        {<-z>}
                                                        {(DQ ($ Id.VSub_DollarName subsha1))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                    (command.Simple
                                                      blame_tok: <test>
                                                      more_env: []
                                                      words: [
                                                        {<test>}
                                                        {<-z>}
                                                        {(DQ ($ Id.VSub_DollarName force))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: [<Id.Op_DAmp _>]
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'subforce='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'subforce='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'subforce='>
                                                      name: subforce
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <-f>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [3867 3888]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <test>
                                                  more_env: []
                                                  words: [
                                                    {<test>}
                                                    {<-z>}
                                                    {(DQ ($ Id.VSub_DollarName nofetch))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <is_tip_reachable>
                                                  more_env: []
                                                  words: [
                                                    {<is_tip_reachable>}
                                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    {(DQ ($ Id.VSub_DollarName sha1))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <fetch_in_submodule>
                                                  more_env: []
                                                  words: [
                                                    {<fetch_in_submodule>}
                                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    {($ Id.VSub_DollarName depth)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <die>
                                                  more_env: []
                                                  words: [
                                                    {<die>}
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ 
                                                                    <
'Unable to fetch in submodule path \''
                                                                    > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
                                            )
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <is_tip_reachable>
                                                  more_env: []
                                                  words: [
                                                    {<is_tip_reachable>}
                                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    {(DQ ($ Id.VSub_DollarName sha1))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <fetch_in_submodule>
                                                  more_env: []
                                                  words: [
                                                    {<fetch_in_submodule>}
                                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                                    {($ Id.VSub_DollarName depth)}
                                                    {(DQ ($ Id.VSub_DollarName sha1))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <die>
                                                  more_env: []
                                                  words: [
                                                    {<die>}
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ 
                                                                    <'Fetched in submodule path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <
'displaypath\', but it did not contain '
                                                                    > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <
'sha1. Direct fetching of that commit failed.'
                                                                    >
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
                                            )
                                          ]
                                          spids: [3901 3912]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'must_die_on_failure='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'must_die_on_failure='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'must_die_on_failure='>
                                              name: must_die_on_failure
                                            )
                                          op: assign_op.Equal
                                          rhs: (rhs_word__Empty)
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: 
                                        (case_arg.Word
                                          w: {(DQ ($ Id.VSub_DollarName update_module))}
                                        )
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <checkout>
                                          pattern: (pat.Words words:[{<checkout>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'command='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'command='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'command='>
                                                      name: command
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ <'git checkout '> 
                                                        ($ Id.VSub_DollarName subforce) <' -q'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'die_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'die_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'die_msg='>
                                                      name: die_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Unable to checkout \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'sha1\' in submodule path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'say_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'say_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'say_msg='>
                                                      name: say_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Submodule path \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'displaypath\': checked out \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'sha1\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <rebase>
                                          pattern: (pat.Words words:[{<rebase>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'command='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'command='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'command='>
                                                      name: command
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <'git rebase'>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'die_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'die_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'die_msg='>
                                                      name: die_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Unable to rebase \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'sha1\' in submodule path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'say_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'say_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'say_msg='>
                                                      name: say_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Submodule path \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'displaypath\': rebased into \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'sha1\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'must_die_on_failure='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                      name: must_die_on_failure
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<yes>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <merge>
                                          pattern: (pat.Words words:[{<merge>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'command='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'command='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'command='>
                                                      name: command
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <'git merge'>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'die_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'die_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'die_msg='>
                                                      name: die_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Unable to merge \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'sha1\' in submodule path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'say_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'say_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'say_msg='>
                                                      name: say_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Submodule path \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'displaypath\': merged in \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <'sha1\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'must_die_on_failure='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                      name: must_die_on_failure
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<yes>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.KW_Bang '!'>
                                          pattern: 
                                            (pat.Words
                                              words: [{<Id.KW_Bang '!'> <Id.Lit_Star '*'>}]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'command='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'command='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'command='>
                                                      name: command
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name update_module>
                                                          var_name: update_module
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_Pound '#'>
                                                              arg_word: {<Id.Lit_Other '!'>}
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'die_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'die_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'die_msg='>
                                                      name: die_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Execution of \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'command '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                                    <
'sha1\' failed in submodule path \''
                                                                    > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'say_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'say_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'say_msg='>
                                                      name: say_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ <'Submodule path \''> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'displaypath\': \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'command '> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\$'>
                                                                      ch: '$'
                                                                    ) <'sha1\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'must_die_on_failure='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'must_die_on_failure='>
                                                      name: must_die_on_failure
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<yes>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Star '*'>
                                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.Simple
                                              blame_tok: <die>
                                              more_env: []
                                              words: [
                                                {<die>}
                                                {
                                                  (DQ 
                                                    (CommandSub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: 
                                                        (command.Simple
                                                          blame_tok: <eval_gettext>
                                                          more_env: []
                                                          words: [
                                                            {<eval_gettext>}
                                                            {
                                                              (DQ <'Invalid update mode \''> 
                                                                ($ Id.VSub_DollarName update_module) <'\' for submodule \''> ($ Id.VSub_DollarName name) <'\''>
                                                              )
                                                            }
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      right: <Id.Eof_RParen _>
                                                    )
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Subshell
                                                  left: <Id.Op_LParen _>
                                                  child: 
                                                    (command.CommandList
                                                      children: [
                                                        (command.Sentence
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <sanitize_submodule_env>
                                                              more_env: []
                                                              words: [{<sanitize_submodule_env>}]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          terminator: <Id.Op_Semi _>
                                                        )
                                                        (command.AndOr
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <cd>
                                                              more_env: []
                                                              words: [
                                                                {<cd>}
                                                                {(DQ ($ Id.VSub_DollarName sm_path))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.Simple
                                                              blame_tok: 
                                                                <Id.VSub_DollarName '$command'>
                                                              more_env: []
                                                              words: [
                                                                {($ Id.VSub_DollarName command)}
                                                                {(DQ ($ Id.VSub_DollarName sha1))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          ops: [<Id.Op_DAmp _>]
                                                        )
                                                      ]
                                                    )
                                                  right: <Id.Right_Subshell _>
                                                  redirects: []
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <say>
                                              more_env: []
                                              words: [{<say>} {(DQ ($ Id.VSub_DollarName say_msg))}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          spids: [4260 4282]
                                        )
                                        (IfArm
                                          keyword: <Id.KW_Elif elif>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <test>
                                                  more_env: []
                                                  words: [
                                                    {<test>}
                                                    {<-n>}
                                                    {(DQ ($ Id.VSub_DollarName must_die_on_failure))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <die_with_status>
                                              more_env: []
                                              words: [
                                                {<die_with_status>}
                                                {<2>}
                                                {(DQ ($ Id.VSub_DollarName die_msg))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          spids: [4292 4303]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'err='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'err='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'err='>
                                                  name: err
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ (${ Id.VSub_Name err) <';'> 
                                                    ($ Id.VSub_DollarName die_msg)
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  spids: [3830 3856]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName recursive))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Subshell
                                      left: <Id.Op_LParen _>
                                      child: 
                                        (command.CommandList
                                          children: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'prefix='>
                                                      name: prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <git>
                                                            more_env: []
                                                            words: [
                                                              {<git>}
                                                              {<submodule--helper>}
                                                              {<relative-path>}
                                                              {
                                                                (DQ ($ Id.VSub_DollarName prefix) 
                                                                  ($ Id.VSub_DollarName sm_path) <'/'>
                                                                )
                                                              }
                                                              {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Eof_RParen _>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'wt_prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'wt_prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'wt_prefix='>
                                                      name: wt_prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: (rhs_word__Empty)
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Simple
                                              blame_tok: <sanitize_submodule_env>
                                              more_env: []
                                              words: [{<sanitize_submodule_env>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <cd>
                                                  more_env: []
                                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <eval>
                                                  more_env: []
                                                  words: [{<eval>} {<cmd_update>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _>]
                                            )
                                          ]
                                        )
                                      right: <Id.Right_Subshell _>
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'res='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'res='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'res='>
                                              name: res
                                            )
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_QMark '?')}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <test>
                                                  more_env: []
                                                  words: [
                                                    {<test>}
                                                    {($ Id.VSub_DollarName res)}
                                                    {<-gt>}
                                                    {<0>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'die_msg='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'die_msg='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'die_msg='>
                                                      name: die_msg
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <eval_gettext>
                                                              more_env: []
                                                              words: [
                                                                {<eval_gettext>}
                                                                {
                                                                  (DQ 
                                                                    <
'Failed to recurse into submodule path \''
                                                                    > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'displaypath\''>
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <test>
                                                          more_env: []
                                                          words: [
                                                            {<test>}
                                                            {($ Id.VSub_DollarName res)}
                                                            {<-ne>}
                                                            {<2>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike 'err='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike 'err='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'err='>
                                                              name: err
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ Id.VSub_Name err) <';'> 
                                                                ($ Id.VSub_DollarName die_msg)
                                                              )
                                                            }
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.ControlFlow
                                                      keyword: <Id.ControlFlow_Continue continue>
                                                    )
                                                  ]
                                                  spids: [4430 4441]
                                                )
                                              ]
                                              else_kw: <Id.KW_Else else>
                                              else_action: [
                                                (command.Simple
                                                  blame_tok: <die_with_status>
                                                  more_env: []
                                                  words: [
                                                    {<die_with_status>}
                                                    {($ Id.VSub_DollarName res)}
                                                    {(DQ ($ Id.VSub_DollarName die_msg))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                          ]
                                          spids: [4402 4413]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  spids: [4338 4349]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName err))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'OIFS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'OIFS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OIFS='> name:OIFS)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName IFS)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'IFS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'IFS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                                  op: assign_op.Equal
                                  rhs: {(SQ <';'>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ForEach
                              keyword: <Id.KW_For for>
                              iter_names: [e]
                              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName err)}])
                              body: 
                                (command.DoGroup
                                  left: <Id.KW_Do do>
                                  children: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <test>
                                                  more_env: []
                                                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName e))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {(DQ ($ Id.VSub_DollarName e))}]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_GreatAnd '>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<2>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          spids: [4518 4529]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'IFS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'IFS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName OIFS)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [4482 4493]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <set_name_rev>
      name: set_name_rev
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'revname='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'revname='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revname='> name:revname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Subshell
                            left: <Id.Op_LParen _>
                            child: 
                              (command.CommandList
                                children: [
                                  (command.Simple
                                    blame_tok: <sanitize_submodule_env>
                                    more_env: []
                                    words: [{<sanitize_submodule_env>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.AndOr
                                    children: [
                                      (command.Simple
                                        blame_tok: <cd>
                                        more_env: []
                                        words: [{<cd>} {(DQ ($ Id.VSub_Number 1))}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (BraceGroup
                                        left: <Id.Lit_LBrace '{'>
                                        children: [
                                          (command.AndOr
                                            children: [
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [{<git>} {<describe>} {(DQ ($ Id.VSub_Number 2))}]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<describe>}
                                                  {<--tags>}
                                                  {(DQ ($ Id.VSub_Number 2))}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<describe>}
                                                  {<--contains>}
                                                  {(DQ ($ Id.VSub_Number 2))}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<describe>}
                                                  {<--all>}
                                                  {<--always>}
                                                  {(DQ ($ Id.VSub_Number 2))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [<Id.Op_DPipe _> <Id.Op_DPipe _> <Id.Op_DPipe _>]
                                          )
                                        ]
                                        redirects: []
                                        right: <Id.Lit_RBrace '}'>
                                      )
                                    ]
                                    ops: [<Id.Op_DAmp _>]
                                  )
                                ]
                              )
                            right: <Id.Right_Subshell _>
                            redirects: []
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName revname))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'revname='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'revname='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revname='> name:revname)
                      op: assign_op.Equal
                      rhs: {(DQ <' ('> ($ Id.VSub_DollarName revname) <')'>)}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_summary>
      name: cmd_summary
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'summary_limit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'summary_limit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'summary_limit='> name:summary_limit)
                  op: assign_op.Equal
                  rhs: {<-1>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'for_status='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'for_status='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'for_status='> name:for_status)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'diff_cmd='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'diff_cmd='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diff_cmd='> name:diff_cmd)
                  op: assign_op.Equal
                  rhs: {<diff-index>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <--cached>
                          pattern: (pat.Words words:[{<--cached>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'cached='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'cached='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cached='> name:cached)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--files>
                          pattern: (pat.Words words:[{<--files>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'files='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'files='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'files='> name:files)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--for-status>
                          pattern: (pat.Words words:[{<--for-status>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'for_status='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'for_status='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'for_status='>
                                      name: for_status
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-n>
                          pattern: (pat.Words words:[{<-n>} {<--summary-limit>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'summary_limit='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'summary_limit='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'summary_limit='>
                                      name: summary_limit
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <isnumber>
                                  more_env: []
                                  words: [{<isnumber>} {(DQ ($ Id.VSub_DollarName summary_limit))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--summary-limit>
                          pattern: 
                            (pat.Words
                              words: [{<--summary-limit> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'summary_limit='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'summary_limit='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'summary_limit='>
                                      name: summary_limit
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_Pound '#'>
                                              arg_word: {<'--summary-limit='>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <isnumber>
                                  more_env: []
                                  words: [{<isnumber>} {(DQ ($ Id.VSub_DollarName summary_limit))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <usage>
                                  more_env: []
                                  words: [{<usage>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {($ Id.VSub_DollarName summary_limit)} {<Id.Lit_Equals '='>} {<0>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'rev='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'rev='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rev='> name:rev)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<rev-parse>}
                                          {<-q>}
                                          {<--verify>}
                                          {<--default>}
                                          {<HEAD>}
                                          {
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Number 1>
                                              var_name: 1
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op: <Id.VTest_Plus _>
                                                  arg_word: {(DQ ($ Id.VSub_Number 1))}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          }
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName rev)}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.Lit_Equals '='>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [4905 4931]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_Number 1))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <HEAD>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [{<git>} {<hash-object>} {<-w>} {<-t>} {<tree>} {<--stdin>}]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_Less '<'>
                                        loc: (redir_loc.Fd fd:0)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [4951 4976]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'head='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'head='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                      op: assign_op.Equal
                      rhs: {(DQ <HEAD>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<-n>}
                            {(DQ ($ Id.VSub_DollarName files))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName cached))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {
                                          (DQ 
                                            <
'The --cached option cannot be used with the --files option'
                                            >
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'diff_cmd='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'diff_cmd='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diff_cmd='> name:diff_cmd)
                          op: assign_op.Equal
                          rhs: {<diff-files>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5028 5041]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <cd_to_toplevel>
              more_env: []
              words: [{<cd_to_toplevel>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {
                  (DQ <'set '> 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<rev-parse>}
                            {<--sq>}
                            {<--prefix>}
                            {(DQ ($ Id.VSub_DollarName wt_prefix))}
                            {<-->}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'modules='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'modules='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'modules='> name:modules)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {($ Id.VSub_DollarName diff_cmd)}
                                  {($ Id.VSub_DollarName cached)}
                                  {<--ignore-submodules> <Id.Lit_Equals '='> <dirty>}
                                  {<--raw>}
                                  {($ Id.VSub_DollarName head)}
                                  {<-->}
                                  {(DQ ($ Id.VSub_At '@'))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sane_egrep>
                                more_env: []
                                words: [{<sane_egrep>} {(SQ <'^:([0-7]* )?160000'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.WhileUntil
                                keyword: <Id.KW_While while>
                                cond: 
                                  (condition.Shell
                                    commands: [
                                      (command.Simple
                                        blame_tok: <read>
                                        more_env: []
                                        words: [
                                          {<read>}
                                          {<mod_src>}
                                          {<mod_dst>}
                                          {<sha1_src>}
                                          {<sha1_dst>}
                                          {<status>}
                                          {<sm_path>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                  )
                                body: 
                                  (command.DoGroup
                                    left: <Id.KW_Do do>
                                    children: [
                                      (command.If
                                        if_kw: <Id.KW_If if>
                                        arms: [
                                          (IfArm
                                            keyword: <Id.KW_If if>
                                            cond: 
                                              (condition.Shell
                                                commands: [
                                                  (command.AndOr
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <test>
                                                        more_env: []
                                                        words: [
                                                          {<test>}
                                                          {(DQ ($ Id.VSub_DollarName status))}
                                                          {<Id.Lit_Equals '='>}
                                                          {<D>}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <test>
                                                        more_env: []
                                                        words: [
                                                          {<test>}
                                                          {(DQ ($ Id.VSub_DollarName status))}
                                                          {<Id.Lit_Equals '='>}
                                                          {<T>}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_DPipe _>]
                                                  )
                                                ]
                                              )
                                            then_kw: <Id.KW_Then then>
                                            action: [
                                              (command.Simple
                                                blame_tok: <printf>
                                                more_env: []
                                                words: [
                                                  {<printf>}
                                                  {(SQ <'%s\\n'>)}
                                                  {(DQ ($ Id.VSub_DollarName sm_path))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.ControlFlow
                                                keyword: <Id.ControlFlow_Continue continue>
                                              )
                                            ]
                                            spids: [5170 5195]
                                          )
                                        ]
                                        else_action: []
                                        fi_kw: <Id.KW_Fi fi>
                                        redirects: []
                                      )
                                      (command.If
                                        if_kw: <Id.KW_If if>
                                        arms: [
                                          (IfArm
                                            keyword: <Id.KW_If if>
                                            cond: 
                                              (condition.Shell
                                                commands: [
                                                  (command.Simple
                                                    blame_tok: <test>
                                                    more_env: []
                                                    words: [
                                                      {<test>}
                                                      {<-n>}
                                                      {(DQ ($ Id.VSub_DollarName for_status))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                ]
                                              )
                                            then_kw: <Id.KW_Then then>
                                            action: [
                                              (command.ShAssignment
                                                left: <Id.Lit_VarLike 'name='>
                                                pairs: [
                                                  (AssignPair
                                                    left: <Id.Lit_VarLike 'name='>
                                                    lhs: 
                                                      (sh_lhs_expr.Name
                                                        left: <Id.Lit_VarLike 'name='>
                                                        name: name
                                                      )
                                                    op: assign_op.Equal
                                                    rhs: 
                                                      {
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <git>
                                                              more_env: []
                                                              words: [
                                                                {<git>}
                                                                {<submodule--helper>}
                                                                {<name>}
                                                                {(DQ ($ Id.VSub_DollarName sm_path))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      }
                                                  )
                                                ]
                                                redirects: []
                                              )
                                              (command.ShAssignment
                                                left: <Id.Lit_VarLike 'ignore_config='>
                                                pairs: [
                                                  (AssignPair
                                                    left: <Id.Lit_VarLike 'ignore_config='>
                                                    lhs: 
                                                      (sh_lhs_expr.Name
                                                        left: <Id.Lit_VarLike 'ignore_config='>
                                                        name: ignore_config
                                                      )
                                                    op: assign_op.Equal
                                                    rhs: 
                                                      {
                                                        (CommandSub
                                                          left_token: <Id.Left_DollarParen '$('>
                                                          child: 
                                                            (command.Simple
                                                              blame_tok: <get_submodule_config>
                                                              more_env: []
                                                              words: [
                                                                {<get_submodule_config>}
                                                                {(DQ ($ Id.VSub_DollarName name))}
                                                                {<ignore>}
                                                                {<none>}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          right: <Id.Eof_RParen _>
                                                        )
                                                      }
                                                  )
                                                ]
                                                redirects: []
                                              )
                                              (command.AndOr
                                                children: [
                                                  (command.Simple
                                                    blame_tok: <test>
                                                    more_env: []
                                                    words: [
                                                      {<test>}
                                                      {($ Id.VSub_DollarName status)}
                                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                      {<A>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.Simple
                                                    blame_tok: <test>
                                                    more_env: []
                                                    words: [
                                                      {<test>}
                                                      {($ Id.VSub_DollarName ignore_config)}
                                                      {<Id.Lit_Equals '='>}
                                                      {<all>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.ControlFlow
                                                    keyword: <Id.ControlFlow_Continue continue>
                                                  )
                                                ]
                                                ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                              )
                                            ]
                                            spids: [5219 5230]
                                          )
                                        ]
                                        else_action: []
                                        fi_kw: <Id.KW_Fi fi>
                                        redirects: []
                                      )
                                      (command.AndOr
                                        children: [
                                          (command.Simple
                                            blame_tok: <git-rev-parse>
                                            more_env: [
                                              (EnvPair
                                                left: <Id.Lit_VarLike 'GIT_DIR='>
                                                name: GIT_DIR
                                                val: {(DQ ($ Id.VSub_DollarName sm_path) <'/.git'>)}
                                              )
                                            ]
                                            words: [{<git-rev-parse>} {<--git-dir>}]
                                            redirects: [
                                              (Redir
                                                op: <Id.Redir_Great '>'>
                                                loc: (redir_loc.Fd fd:1)
                                                arg: {<'/dev/null'>}
                                              )
                                              (Redir
                                                op: <Id.Redir_GreatAnd '2>&'>
                                                loc: (redir_loc.Fd fd:2)
                                                arg: {<1>}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                          (command.Simple
                                            blame_tok: <printf>
                                            more_env: []
                                            words: [
                                              {<printf>}
                                              {(SQ <'%s\\n'>)}
                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                        ops: [<Id.Op_DAmp _>]
                                      )
                                    ]
                                    right: <Id.KW_Done done>
                                  )
                                redirects: []
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName modules))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {($ Id.VSub_DollarName diff_cmd)}
                    {($ Id.VSub_DollarName cached)}
                    {<--ignore-submodules> <Id.Lit_Equals '='> <dirty>}
                    {<--raw>}
                    {($ Id.VSub_DollarName head)}
                    {<-->}
                    {($ Id.VSub_DollarName modules)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sane_egrep>
                  more_env: []
                  words: [{<sane_egrep>} {(SQ <'^:([0-7]* )?160000'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cut>
                  more_env: []
                  words: [{<cut>} {<-c2->}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [
                            {<read>}
                            {<mod_src>}
                            {<mod_dst>}
                            {<sha1_src>}
                            {<sha1_dst>}
                            {<status>}
                            {<name>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName cached))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName sha1_dst)}
                                            {<Id.Lit_Equals '='>}
                                            {<0000000000000000000000000000000000000000>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Case
                                  case_kw: <Id.KW_Case case>
                                  to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName mod_dst))})
                                  arms_start: <Id.KW_In in>
                                  arms: [
                                    (CaseArm
                                      left: <160000>
                                      pattern: (pat.Words words:[{<160000>}])
                                      middle: <Id.Right_CasePat _>
                                      action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'sha1_dst='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'sha1_dst='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'sha1_dst='>
                                                  name: sha1_dst
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: [
                                                          (EnvPair
                                                            left: <Id.Lit_VarLike 'GIT_DIR='>
                                                            name: GIT_DIR
                                                            val: 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName name) 
                                                                  <'/.git'>
                                                                )
                                                              }
                                                          )
                                                        ]
                                                        words: [{<git>} {<rev-parse>} {<HEAD>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                    (CaseArm
                                      left: <100644>
                                      pattern: (pat.Words words:[{<100644>} {<100755>} {<120000>}])
                                      middle: <Id.Right_CasePat _>
                                      action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'sha1_dst='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'sha1_dst='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'sha1_dst='>
                                                  name: sha1_dst
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: []
                                                        words: [
                                                          {<git>}
                                                          {<hash-object>}
                                                          {($ Id.VSub_DollarName name)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                    (CaseArm
                                      left: <000000>
                                      pattern: (pat.Words words:[{<000000>}])
                                      middle: <Id.Right_CasePat _>
                                      action: []
                                      right: <Id.Op_DSemi _>
                                    )
                                    (CaseArm
                                      left: <Id.Lit_Star '*'>
                                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                      middle: <Id.Right_CasePat _>
                                      action: [
                                        (command.Simple
                                          blame_tok: <eval_gettextln>
                                          more_env: []
                                          words: [
                                            {<eval_gettextln>}
                                            {
                                              (DQ <'unexpected mode '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <mod_dst>
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_GreatAnd '>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Continue continue>
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                  ]
                                  arms_end: <Id.KW_Esac esac>
                                  redirects: []
                                )
                              ]
                              spids: [5400 5422]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'missing_src='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'missing_src='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'missing_src='>
                                  name: missing_src
                                )
                              op: assign_op.Equal
                              rhs: (rhs_word__Empty)
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'missing_dst='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'missing_dst='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'missing_dst='>
                                  name: missing_dst
                                )
                              op: assign_op.Equal
                              rhs: (rhs_word__Empty)
                            )
                          ]
                          redirects: []
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {($ Id.VSub_DollarName mod_src)}
                                {<Id.Lit_Equals '='>}
                                {<160000>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <git-rev-parse>
                                  more_env: [
                                    (EnvPair
                                      left: <Id.Lit_VarLike 'GIT_DIR='>
                                      name: GIT_DIR
                                      val: {(DQ ($ Id.VSub_DollarName name) <'/.git'>)}
                                    )
                                  ]
                                  words: [
                                    {<git-rev-parse>}
                                    {<-q>}
                                    {<--verify>}
                                    {($ Id.VSub_DollarName sha1_src) <Id.Lit_Other '^'> <0>}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'missing_src='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'missing_src='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'missing_src='>
                                      name: missing_src
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {($ Id.VSub_DollarName mod_dst)}
                                {<Id.Lit_Equals '='>}
                                {<160000>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <git-rev-parse>
                                  more_env: [
                                    (EnvPair
                                      left: <Id.Lit_VarLike 'GIT_DIR='>
                                      name: GIT_DIR
                                      val: {(DQ ($ Id.VSub_DollarName name) <'/.git'>)}
                                    )
                                  ]
                                  words: [
                                    {<git-rev-parse>}
                                    {<-q>}
                                    {<--verify>}
                                    {($ Id.VSub_DollarName sha1_dst) <Id.Lit_Other '^'> <0>}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'missing_dst='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'missing_dst='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'missing_dst='>
                                      name: missing_dst
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'display_name='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'display_name='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'display_name='>
                                  name: display_name
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<submodule--helper>}
                                          {<relative-path>}
                                          {(DQ ($ Id.VSub_DollarName name))}
                                          {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'total_commits='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'total_commits='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'total_commits='>
                                  name: total_commits
                                )
                              op: assign_op.Equal
                              rhs: (rhs_word__Empty)
                            )
                          ]
                          redirects: []
                        )
                        (command.Case
                          case_kw: <Id.KW_Case case>
                          to_match: 
                            (case_arg.Word
                              w: 
                                {
                                  (DQ ($ Id.VSub_DollarName missing_src) <','> 
                                    ($ Id.VSub_DollarName missing_dst)
                                  )
                                }
                            )
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <t>
                              pattern: (pat.Words words:[{<t> <Id.Lit_Comma ','>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'errmsg='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'errmsg='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'errmsg='>
                                          name: errmsg
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'  Warn: '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'display_name doesn\'t contain commit '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <sha1_src>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Comma ','>
                              pattern: (pat.Words words:[{<Id.Lit_Comma ','> <t>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'errmsg='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'errmsg='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'errmsg='>
                                          name: errmsg
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'  Warn: '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'display_name doesn\'t contain commit '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <sha1_dst>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <t>
                              pattern: (pat.Words words:[{<t> <Id.Lit_Comma ','> <t>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'errmsg='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'errmsg='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'errmsg='>
                                          name: errmsg
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'  Warn: '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'display_name doesn\'t contain commits '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <'sha1_src and '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <sha1_dst>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'errmsg='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'errmsg='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'errmsg='>
                                          name: errmsg
                                        )
                                      op: assign_op.Equal
                                      rhs: (rhs_word__Empty)
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'total_commits='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'total_commits='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'total_commits='>
                                          name: total_commits
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.CommandList
                                                children: [
                                                  (command.If
                                                    if_kw: <Id.KW_If if>
                                                    arms: [
                                                      (IfArm
                                                        keyword: <Id.KW_If if>
                                                        cond: 
                                                          (condition.Shell
                                                            commands: [
                                                              (command.AndOr
                                                                children: [
                                                                  (command.Simple
                                                                    blame_tok: <test>
                                                                    more_env: []
                                                                    words: [
                                                                      {<test>}
                                                                      {
                                                                        ($ Id.VSub_DollarName mod_src)
                                                                      }
                                                                      {<Id.Lit_Equals '='>}
                                                                      {<160000>}
                                                                    ]
                                                                    redirects: []
                                                                    do_fork: T
                                                                  )
                                                                  (command.Simple
                                                                    blame_tok: <test>
                                                                    more_env: []
                                                                    words: [
                                                                      {<test>}
                                                                      {
                                                                        ($ Id.VSub_DollarName mod_dst)
                                                                      }
                                                                      {<Id.Lit_Equals '='>}
                                                                      {<160000>}
                                                                    ]
                                                                    redirects: []
                                                                    do_fork: T
                                                                  )
                                                                ]
                                                                ops: [<Id.Op_DAmp _>]
                                                              )
                                                            ]
                                                          )
                                                        then_kw: <Id.KW_Then then>
                                                        action: [
                                                          (command.ShAssignment
                                                            left: <Id.Lit_VarLike 'range='>
                                                            pairs: [
                                                              (AssignPair
                                                                left: <Id.Lit_VarLike 'range='>
                                                                lhs: 
                                                                  (sh_lhs_expr.Name
                                                                    left: <Id.Lit_VarLike 'range='>
                                                                    name: range
                                                                  )
                                                                op: assign_op.Equal
                                                                rhs: 
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName sha1_src) <...> ($ Id.VSub_DollarName sha1_dst)
                                                                    )
                                                                  }
                                                              )
                                                            ]
                                                            redirects: []
                                                          )
                                                        ]
                                                        spids: [5729 5750]
                                                      )
                                                      (IfArm
                                                        keyword: <Id.KW_Elif elif>
                                                        cond: 
                                                          (condition.Shell
                                                            commands: [
                                                              (command.Simple
                                                                blame_tok: <test>
                                                                more_env: []
                                                                words: [
                                                                  {<test>}
                                                                  {($ Id.VSub_DollarName mod_src)}
                                                                  {<Id.Lit_Equals '='>}
                                                                  {<160000>}
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            ]
                                                          )
                                                        then_kw: <Id.KW_Then then>
                                                        action: [
                                                          (command.ShAssignment
                                                            left: <Id.Lit_VarLike 'range='>
                                                            pairs: [
                                                              (AssignPair
                                                                left: <Id.Lit_VarLike 'range='>
                                                                lhs: 
                                                                  (sh_lhs_expr.Name
                                                                    left: <Id.Lit_VarLike 'range='>
                                                                    name: range
                                                                  )
                                                                op: assign_op.Equal
                                                                rhs: {($ Id.VSub_DollarName sha1_src)}
                                                              )
                                                            ]
                                                            redirects: []
                                                          )
                                                        ]
                                                        spids: [5761 5772]
                                                      )
                                                    ]
                                                    else_kw: <Id.KW_Else else>
                                                    else_action: [
                                                      (command.ShAssignment
                                                        left: <Id.Lit_VarLike 'range='>
                                                        pairs: [
                                                          (AssignPair
                                                            left: <Id.Lit_VarLike 'range='>
                                                            lhs: 
                                                              (sh_lhs_expr.Name
                                                                left: <Id.Lit_VarLike 'range='>
                                                                name: range
                                                              )
                                                            op: assign_op.Equal
                                                            rhs: {($ Id.VSub_DollarName sha1_dst)}
                                                          )
                                                        ]
                                                        redirects: []
                                                      )
                                                    ]
                                                    fi_kw: <Id.KW_Fi fi>
                                                    redirects: []
                                                  )
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: [
                                                          (EnvPair
                                                            left: <Id.Lit_VarLike 'GIT_DIR='>
                                                            name: GIT_DIR
                                                            val: 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName name) 
                                                                  <'/.git'>
                                                                )
                                                              }
                                                          )
                                                        ]
                                                        words: [
                                                          {<git>}
                                                          {<rev-list>}
                                                          {<--first-parent>}
                                                          {($ Id.VSub_DollarName range)}
                                                          {<-->}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <wc>
                                                        more_env: []
                                                        words: [{<wc>} {<-l>}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                ]
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'total_commits='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'total_commits='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'total_commits='>
                                          name: total_commits
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <' ('> 
                                            (word_part.ArithSub
                                              left: <Id.Left_DollarDParen '$(('>
                                              anode: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: {($ Id.VSub_DollarName total_commits)}
                                                  right: {<Id.Lit_Digits 0>}
                                                )
                                              right: <Id.Right_DollarDParen _>
                                            ) <')'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'sha1_abbr_src='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'sha1_abbr_src='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'sha1_abbr_src='>
                                  name: sha1_abbr_src
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            blame_tok: <echo>
                                            more_env: []
                                            words: [{<echo>} {($ Id.VSub_DollarName sha1_src)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                          (command.Simple
                                            blame_tok: <cut>
                                            more_env: []
                                            words: [{<cut>} {<-c1-7>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                        ops: [<Id.Op_Pipe _>]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'sha1_abbr_dst='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'sha1_abbr_dst='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'sha1_abbr_dst='>
                                  name: sha1_abbr_dst
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            blame_tok: <echo>
                                            more_env: []
                                            words: [{<echo>} {($ Id.VSub_DollarName sha1_dst)}]
                                            redirects: []
                                            do_fork: T
                                          )
                                          (command.Simple
                                            blame_tok: <cut>
                                            more_env: []
                                            words: [{<cut>} {<-c1-7>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        ]
                                        ops: [<Id.Op_Pipe _>]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {($ Id.VSub_DollarName status)}
                                        {<Id.Lit_Equals '='>}
                                        {<T>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'blob='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'blob='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'blob='> name:blob)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <gettext>
                                                  more_env: []
                                                  words: [{<gettext>} {(DQ <blob>)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'submodule='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'submodule='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'submodule='>
                                          name: submodule
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <gettext>
                                                  more_env: []
                                                  words: [{<gettext>} {(DQ <submodule>)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {($ Id.VSub_DollarName mod_dst)}
                                                {<Id.Lit_Equals '='>}
                                                {<160000>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {
                                              (DQ <'* '> ($ Id.VSub_DollarName display_name) <' '> 
                                                ($ Id.VSub_DollarName sha1_abbr_src) <'('> ($ Id.VSub_DollarName blob) <')->'> ($ Id.VSub_DollarName sha1_abbr_dst) <'('> 
                                                ($ Id.VSub_DollarName submodule) <')'> ($ Id.VSub_DollarName total_commits) <':'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [5905 5916]
                                    )
                                  ]
                                  else_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [
                                        {<echo>}
                                        {
                                          (DQ <'* '> ($ Id.VSub_DollarName display_name) <' '> 
                                            ($ Id.VSub_DollarName sha1_abbr_src) <'('> ($ Id.VSub_DollarName submodule) <')->'> ($ Id.VSub_DollarName sha1_abbr_dst) <'('> 
                                            ($ Id.VSub_DollarName blob) <')'> ($ Id.VSub_DollarName total_commits) <':'>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              spids: [5867 5878]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ <'* '> ($ Id.VSub_DollarName display_name) <' '> 
                                    ($ Id.VSub_DollarName sha1_abbr_src) <...> ($ Id.VSub_DollarName sha1_abbr_dst) ($ Id.VSub_DollarName total_commits) <':'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName errmsg))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {($ Id.VSub_DollarName mod_dst)}
                                        {<Id.Lit_Equals '='>}
                                        {<160000>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName errmsg))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                              ]
                              spids: [5983 5994]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {($ Id.VSub_DollarName mod_src)}
                                                {<Id.Lit_Equals '='>}
                                                {<160000>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {($ Id.VSub_DollarName mod_dst)}
                                                {<Id.Lit_Equals '='>}
                                                {<160000>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'limit='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'limit='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'limit='>
                                              name: limit
                                            )
                                          op: assign_op.Equal
                                          rhs: (rhs_word__Empty)
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName summary_limit)}
                                            {<-gt>}
                                            {<0>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'limit='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'limit='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'limit='>
                                                  name: limit
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ <-> ($ Id.VSub_DollarName summary_limit))}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: [
                                        (EnvPair
                                          left: <Id.Lit_VarLike 'GIT_DIR='>
                                          name: GIT_DIR
                                          val: {(DQ ($ Id.VSub_DollarName name) <'/.git'>)}
                                        )
                                      ]
                                      words: [
                                        {<git>}
                                        {<log>}
                                        {($ Id.VSub_DollarName limit)}
                                        {<--pretty> <Id.Lit_Equals '='> (SQ <'format:  %m %s'>)}
                                        {<--first-parent>}
                                        {($ Id.VSub_DollarName sha1_src) <Id.Lit_TDot ...> 
                                          ($ Id.VSub_DollarName sha1_dst)
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6025 6046]
                                )
                                (IfArm
                                  keyword: <Id.KW_Elif elif>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {($ Id.VSub_DollarName mod_dst)}
                                            {<Id.Lit_Equals '='>}
                                            {<160000>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: [
                                        (EnvPair
                                          left: <Id.Lit_VarLike 'GIT_DIR='>
                                          name: GIT_DIR
                                          val: {(DQ ($ Id.VSub_DollarName name) <'/.git'>)}
                                        )
                                      ]
                                      words: [
                                        {<git>}
                                        {<log>}
                                        {<--pretty> <Id.Lit_Equals '='> (SQ <'format:  > %s'>)}
                                        {<-1>}
                                        {($ Id.VSub_DollarName sha1_dst)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6098 6109]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: [
                                    (EnvPair
                                      left: <Id.Lit_VarLike 'GIT_DIR='>
                                      name: GIT_DIR
                                      val: {(DQ ($ Id.VSub_DollarName name) <'/.git'>)}
                                    )
                                  ]
                                  words: [
                                    {<git>}
                                    {<log>}
                                    {<--pretty> <Id.Lit_Equals '='> (SQ <'format:  < %s'>)}
                                    {<-1>}
                                    {($ Id.VSub_DollarName sha1_src)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_status>
      name: cmd_status
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--cached>
                          pattern: (pat.Words words:[{<--cached>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'cached='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'cached='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cached='> name:cached)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--recursive>
                          pattern: (pat.Words words:[{<--recursive>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recursive='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recursive='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recursive='>
                                      name: recursive
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<submodule--helper>}
                            {<list>}
                            {<--prefix>}
                            {(DQ ($ Id.VSub_DollarName wt_prefix))}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'#unmatched'>)} {($ Id.VSub_QMark '?')}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<mode>} {<sha1>} {<stage>} {<sm_path>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <die_if_unmatched>
                          more_env: []
                          words: [
                            {<die_if_unmatched>}
                            {(DQ ($ Id.VSub_DollarName mode))}
                            {(DQ ($ Id.VSub_DollarName sha1))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'name='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<submodule--helper>}
                                              {<name>}
                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'url='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'url='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<config>}
                                          {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.url>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'displaypath='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'displaypath='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'displaypath='>
                                  name: displaypath
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<submodule--helper>}
                                          {<relative-path>}
                                          {
                                            (DQ ($ Id.VSub_DollarName prefix) 
                                              ($ Id.VSub_DollarName sm_path)
                                            )
                                          }
                                          {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {(DQ ($ Id.VSub_DollarName stage))}
                                        {<Id.Lit_Equals '='>}
                                        {<U>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <say>
                                  more_env: []
                                  words: [
                                    {<say>}
                                    {
                                      (DQ <U> ($ Id.VSub_DollarName sha1) <' '> 
                                        ($ Id.VSub_DollarName displaypath)
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Continue continue>
                                )
                              ]
                              spids: [6434 6447]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName url))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (BraceGroup
                                          left: <Id.Lit_LBrace '{'>
                                          children: [
                                            (command.AndOr
                                              children: [
                                                (command.Pipeline
                                                  negated: <Id.KW_Bang '!'>
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <test>
                                                      more_env: []
                                                      words: [
                                                        {<test>}
                                                        {<-d>}
                                                        {(DQ ($ Id.VSub_DollarName sm_path)) 
                                                          <'/.git'>
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: []
                                                )
                                                (command.Pipeline
                                                  negated: <Id.KW_Bang '!'>
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <test>
                                                      more_env: []
                                                      words: [
                                                        {<test>}
                                                        {<-f>}
                                                        {(DQ ($ Id.VSub_DollarName sm_path)) 
                                                          <'/.git'>
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: []
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _>]
                                            )
                                          ]
                                          redirects: []
                                          right: <Id.Lit_RBrace '}'>
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <say>
                                  more_env: []
                                  words: [
                                    {<say>}
                                    {
                                      (DQ <-> ($ Id.VSub_DollarName sha1) <' '> 
                                        ($ Id.VSub_DollarName displaypath)
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Sentence
                                  child: 
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [6466 6511]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<diff-files>}
                                        {<--ignore-submodules> <Id.Lit_Equals '='> <dirty>}
                                        {<--quiet>}
                                        {<-->}
                                        {(DQ ($ Id.VSub_DollarName sm_path))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <set_name_rev>
                                  more_env: []
                                  words: [
                                    {<set_name_rev>}
                                    {(DQ ($ Id.VSub_DollarName sm_path))}
                                    {(DQ ($ Id.VSub_DollarName sha1))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <say>
                                  more_env: []
                                  words: [
                                    {<say>}
                                    {
                                      (DQ <' '> ($ Id.VSub_DollarName sha1) <' '> 
                                        ($ Id.VSub_DollarName displaypath) ($ Id.VSub_DollarName revname)
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [6531 6550]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName cached))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'sha1='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'sha1='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'sha1='>
                                              name: sha1
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.Sentence
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <sanitize_submodule_env>
                                                            more_env: []
                                                            words: [{<sanitize_submodule_env>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        terminator: <Id.Op_Semi _>
                                                      )
                                                      (command.AndOr
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <cd>
                                                            more_env: []
                                                            words: [
                                                              {<cd>}
                                                              {(DQ ($ Id.VSub_DollarName sm_path))}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <git>
                                                            more_env: []
                                                            words: [
                                                              {<git>}
                                                              {<rev-parse>}
                                                              {<--verify>}
                                                              {<HEAD>}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_DAmp _>]
                                                      )
                                                    ]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [6578 6589]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <set_name_rev>
                              more_env: []
                              words: [
                                {<set_name_rev>}
                                {(DQ ($ Id.VSub_DollarName sm_path))}
                                {(DQ ($ Id.VSub_DollarName sha1))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <say>
                              more_env: []
                              words: [
                                {<say>}
                                {
                                  (DQ <'+'> ($ Id.VSub_DollarName sha1) <' '> 
                                    ($ Id.VSub_DollarName displaypath) ($ Id.VSub_DollarName revname)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName recursive))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.AndOr
                                  children: [
                                    (command.Subshell
                                      left: <Id.Op_LParen _>
                                      child: 
                                        (command.CommandList
                                          children: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'prefix='>
                                                      name: prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName displaypath) <'/'>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.Simple
                                              blame_tok: <sanitize_submodule_env>
                                              more_env: []
                                              words: [{<sanitize_submodule_env>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'wt_prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'wt_prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'wt_prefix='>
                                                      name: wt_prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: (rhs_word__Empty)
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <cd>
                                                  more_env: []
                                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <eval>
                                                  more_env: []
                                                  words: [{<eval>} {<cmd_status>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _>]
                                            )
                                          ]
                                        )
                                      right: <Id.Right_Subshell _>
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <die>
                                      more_env: []
                                      words: [
                                        {<die>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ 
                                                        <'Failed to recurse into submodule path \''> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sm_path\''>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              spids: [6644 6655]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <cmd_sync>
      name: cmd_sync
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {($ Id.VSub_Pound '#')} {<-ne>} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--recursive>
                          pattern: (pat.Words words:[{<--recursive>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'recursive='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'recursive='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'recursive='>
                                      name: recursive
                                    )
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <cd_to_toplevel>
              more_env: []
              words: [{<cd_to_toplevel>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<submodule--helper>}
                            {<list>}
                            {<--prefix>}
                            {(DQ ($ Id.VSub_DollarName wt_prefix))}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'#unmatched'>)} {($ Id.VSub_QMark '?')}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<mode>} {<sha1>} {<stage>} {<sm_path>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.Simple
                          blame_tok: <die_if_unmatched>
                          more_env: []
                          words: [
                            {<die_if_unmatched>}
                            {(DQ ($ Id.VSub_DollarName mode))}
                            {(DQ ($ Id.VSub_DollarName sha1))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'name='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'name='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name='> name:name)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<submodule--helper>}
                                          {<name>}
                                          {(DQ ($ Id.VSub_DollarName sm_path))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'url='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'url='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'url='> name:url)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<config>}
                                          {<-f>}
                                          {<.gitmodules>}
                                          {<--get>}
                                          {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.url>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Case
                          case_kw: <Id.KW_Case case>
                          to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName url))})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <'./'>
                              pattern: 
                                (pat.Words
                                  words: [{<'./'> <Id.Lit_Star '*'>} {<'../'> <Id.Lit_Star '*'>}]
                                )
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.AndOr
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'up_path='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'up_path='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'up_path='>
                                              name: up_path
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Pipeline
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <printf>
                                                          more_env: []
                                                          words: [
                                                            {<printf>}
                                                            {(SQ <'%s\\n'>)}
                                                            {(DQ ($ Id.VSub_DollarName sm_path))}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.Simple
                                                          blame_tok: <sed>
                                                          more_env: []
                                                          words: [{<sed>} {(DQ <'s/[^/][^/]*/../g'>)}]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                      ops: [<Id.Op_Pipe _>]
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'up_path='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'up_path='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'up_path='>
                                              name: up_path
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name up_path>
                                                var_name: up_path
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op: <Id.VOp1_Percent '%'>
                                                    arg_word: {<Id.Lit_Slash '/'>}
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              ) <'/'>
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'sub_origin_url='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'sub_origin_url='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'sub_origin_url='>
                                              name: sub_origin_url
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<submodule--helper>}
                                                      {<resolve-relative-url>}
                                                      {(DQ ($ Id.VSub_DollarName url))}
                                                      {(DQ ($ Id.VSub_DollarName up_path))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'super_config_url='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'super_config_url='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'super_config_url='>
                                              name: super_config_url
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<submodule--helper>}
                                                      {<resolve-relative-url>}
                                                      {(DQ ($ Id.VSub_DollarName url))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'sub_origin_url='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'sub_origin_url='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'sub_origin_url='>
                                          name: sub_origin_url
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName url))}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'super_config_url='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'super_config_url='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'super_config_url='>
                                          name: super_config_url
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName url))}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<config>}
                                        {(DQ <submodule.> ($ Id.VSub_DollarName name) <.url>)}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                        (Redir
                                          op: <Id.Redir_Great '2>'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'displaypath='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'displaypath='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'displaypath='>
                                          name: displaypath
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<submodule--helper>}
                                                  {<relative-path>}
                                                  {
                                                    (DQ ($ Id.VSub_DollarName prefix) 
                                                      ($ Id.VSub_DollarName sm_path)
                                                    )
                                                  }
                                                  {(DQ ($ Id.VSub_DollarName wt_prefix))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <say>
                                  more_env: []
                                  words: [
                                    {<say>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval_gettext>
                                              more_env: []
                                              words: [
                                                {<eval_gettext>}
                                                {
                                                  (DQ <'Synchronizing submodule url for \''> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <'displaypath\''>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<config>}
                                    {<submodule.> (DQ ($ Id.VSub_DollarName name)) <.url>}
                                    {(DQ ($ Id.VSub_DollarName super_config_url))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {<-e>}
                                                {(DQ ($ Id.VSub_DollarName sm_path)) <'/.git'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Subshell
                                          left: <Id.Op_LParen _>
                                          child: 
                                            (command.CommandList
                                              children: [
                                                (command.Simple
                                                  blame_tok: <sanitize_submodule_env>
                                                  more_env: []
                                                  words: [{<sanitize_submodule_env>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <cd>
                                                  more_env: []
                                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName sm_path))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'remote='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'remote='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'remote='>
                                                          name: remote
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (CommandSub
                                                            left_token: <Id.Left_DollarParen '$('>
                                                            child: 
                                                              (command.Simple
                                                                blame_tok: <get_default_remote>
                                                                more_env: []
                                                                words: [{<get_default_remote>}]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            right: <Id.Eof_RParen _>
                                                          )
                                                        }
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                                (command.Simple
                                                  blame_tok: <git>
                                                  more_env: []
                                                  words: [
                                                    {<git>}
                                                    {<config>}
                                                    {<remote.> (DQ ($ Id.VSub_DollarName remote)) 
                                                      <.url>
                                                    }
                                                    {(DQ ($ Id.VSub_DollarName sub_origin_url))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.If
                                                  if_kw: <Id.KW_If if>
                                                  arms: [
                                                    (IfArm
                                                      keyword: <Id.KW_If if>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Simple
                                                              blame_tok: <test>
                                                              more_env: []
                                                              words: [
                                                                {<test>}
                                                                {<-n>}
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName recursive)
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                        )
                                                      then_kw: <Id.KW_Then then>
                                                      action: [
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'prefix='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'prefix='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'prefix='>
                                                                  name: prefix
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: 
                                                                {
                                                                  (DQ ($ Id.VSub_DollarName prefix) 
                                                                    ($ Id.VSub_DollarName sm_path) <'/'>
                                                                  )
                                                                }
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                        (command.Simple
                                                          blame_tok: <eval>
                                                          more_env: []
                                                          words: [{<eval>} {<cmd_sync>}]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                      spids: [7195 7206]
                                                    )
                                                  ]
                                                  else_action: []
                                                  fi_kw: <Id.KW_Fi fi>
                                                  redirects: []
                                                )
                                              ]
                                            )
                                          right: <Id.Right_Subshell _>
                                          redirects: []
                                        )
                                      ]
                                      spids: [7145 7157]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              spids: [7073 7092]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName command))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <add>
                  pattern: 
                    (pat.Words
                      words: [
                        {<add>}
                        {<foreach>}
                        {<init>}
                        {<deinit>}
                        {<update>}
                        {<status>}
                        {<summary>}
                        {<sync>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'command='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'command='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-q>
                  pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'GIT_QUIET='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_QUIET='> name:GIT_QUIET)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-b>
                  pattern: (pat.Words words:[{<-b>} {<--branch>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 2))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_SingleQuote '\''>
                          pattern: (pat.Words words:[{(SQ )}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'branch='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'branch='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number 2))}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--cached>
                  pattern: (pat.Words words:[{<--cached>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'cached='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'cached='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cached='> name:cached)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<-->}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName command))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.Lit_Equals '='>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'command='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'command='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command)
                          op: assign_op.Equal
                          rhs: {<status>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7449 7460]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <usage>
                  more_env: []
                  words: [{<usage>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [7436 7446]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName branch))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName command))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<add>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [7481 7504]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName cached))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName command))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<status>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName command))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<summary>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [7515 7551]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <Id.Left_DoubleQuote '"'>
      more_env: []
      words: [{(DQ <cmd_> ($ Id.VSub_DollarName command))} {(DQ ($ Id.VSub_At '@'))}]
      redirects: []
      do_fork: T
    )
  ]
)