(command.CommandList
  children: [
    (command.Assignment
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:me) op:Equal rhs:{(rerere-train)})]
    )
    (command.Assignment
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:USAGE)
          op: Equal
          rhs: {(DQ ($ VSub_DollarName '$me') (' rev-list-args'))}
        )
      ]
    )
    (command.Assignment
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)})]
    )
    (command.Assignment
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:OPTIONS_SPEC) op:Equal rhs:(word.Empty))]
    )
    (C {(.)} 
      {
        (DQ 
          (word_part.CommandSub
            left_token: <Left_DollarParen '$('>
            command_list: (command.CommandList children:[(C {(git)} {(--exec-path)})])
          ) (/git-sh-setup)
        )
      }
    )
    (C {(require_work_tree)})
    (C {(cd_to_toplevel)})
    (command.AndOr
      ops: [Op_DPipe Op_DPipe]
      children: [
        (command.Assignment
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:branch)
              op: Equal
              rhs: 
                {
                  (word_part.CommandSub
                    left_token: <Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [(C {(git)} {(symbolic-ref)} {(-q)} {(HEAD)})]
                      )
                  )
                }
            )
          ]
        )
        (command.Assignment
          pairs: [
            (assign_pair
              lhs: (lhs_expr.LhsName name:original_HEAD)
              op: Equal
              rhs: 
                {
                  (word_part.CommandSub
                    left_token: <Left_DollarParen '$('>
                    command_list: 
                      (command.CommandList
                        children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})]
                      )
                  )
                }
            )
          ]
        )
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(echo)} {(DQ ('Not on any branch and no commit yet?'))}]
              redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(mkdir)} {(-p)} {(DQ ($ VSub_DollarName '$GIT_DIR') (/rr-cache))})
        (command.ControlFlow token:<ControlFlow_Exit exit>)
      ]
    )
    (command.Pipeline
      children: [
        (C {(git)} {(rev-list)} {(--parents)} {(DQ ($ VSub_At '$@'))})
        (command.WhileUntil
          keyword: <KW_While while>
          cond: [(C {(read)} {(commit)} {(parent1)} {(other_parents)})]
          body: 
            (command.DoGroup
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$other_parents'))})]
                      action: [(command.ControlFlow token:<ControlFlow_Continue continue>)]
                    )
                  ]
                )
                (C {(git)} {(checkout)} {(-q)} {(DQ ($ VSub_DollarName '$parent1') ('^0'))})
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Simple
                          words: [{(git)} {(merge)} {($ VSub_DollarName '$other_parents')}]
                          redirects: [
                            (redir.Redir
                              op: <Redir_Great '>'>
                              fd: 16777215
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: <Redir_GreatAnd '2>&'>
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                      action: [(command.ControlFlow token:<ControlFlow_Continue continue>)]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-s)} {(DQ ($ VSub_DollarName '$GIT_DIR') (/MERGE_RR))})]
                      action: [
                        (C {(git)} {(show)} {(-s)} 
                          {(--pretty) (Lit_Other '=') (format) (Lit_Other ':') 
                            (DQ ('Learning from %h %s'))
                          } {(DQ ($ VSub_DollarName '$commit'))}
                        )
                        (C {(git)} {(rerere)})
                        (C {(git)} {(checkout)} {(-q)} {($ VSub_DollarName '$commit')} {(--)} {(.)})
                        (C {(git)} {(rerere)})
                      ]
                    )
                  ]
                )
                (C {(git)} {(reset)} {(-q)} {(--hard)})
              ]
            )
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$branch'))})]
          action: [(C {(git)} {(checkout)} {(DQ ($ VSub_DollarName '$original_HEAD'))})]
        )
      ]
      else_action: [
        (C {(git)} {(checkout)} 
          {
            (DQ 
              (word_part.BracedVarSub
                token: <VSub_Name branch>
                suffix_op: 
                  (suffix_op.Unary
                    op_id: VOp1_Pound
                    arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)}
                  )
              )
            )
          }
        )
      ]
    )
  ]
)