(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:USAGE)
          op: Equal
          rhs: {(DQ ('[-a] [-r] [-m] [-t] [-n] [-b <newname>] <name>'))}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LONG_USAGE)
          op: Equal
          rhs: 
            {
              (DQ ('git-resurrect attempts to find traces of a branch tip\n') 
                ('called <name>, and tries to resurrect it.  Currently, the reflog is\n') ('searched for checkout messages, and with -r also merge messages.  With\n') 
                ('-m and -t, the history of all refs is scanned for Merge <name> into\n') ('other/Merge <other> into <name> (respectively) commit subjects, which\n') 
                ("is rather slow but allows you to resurrect other people's topic\n") (branches.)
              )
            }
          spids: [9]
        )
      ]
      spids: [9]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[21])]
      spids: [21]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_STUCKLONG) op:Equal rhs:{(SQ )} spids:[23])]
      spids: [23]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_SPEC)
          op: Equal
          rhs: 
            {
              (DQ ('git resurrect ') ($ VSub_Name '$USAGE') ('\n') ('--\n') 
                ('b,branch=            save branch as <newname> instead of <name>\n') ('a,all                same as -l -r -m -t\n') 
                ('k,keep-going         full rev-list scan (instead of first match)\n') ('l,reflog             scan reflog for checkouts (enabled by default)\n') 
                ('r,reflog-merges      scan for merges recorded in reflog\n') ('m,merges             scan for merges into other branches (slow)\n') 
                ('t,merge-targets      scan for merges of other branches into <name>\n') ("n,dry-run            don't recreate the branch")
              )
            }
          spids: [25]
        )
      ]
      spids: [25]
    )
    (C {(.)} {(git-sh-setup)})
    (FuncDef
      name: search_reflog
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(sed)}
                {(-ne)}
                {(SQ <'s~^\\([^ ]*\\) .*\\tcheckout: moving from '>) (DQ ($ VSub_Number '$1')) 
                  (SQ <' .*~\\1~p'>)
                }
              ]
              redirects: [
                (Redir
                  op_id: Redir_Less
                  fd: 16777215
                  arg_word: {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)}
                  spids: [72]
                )
              ]
            )
          ]
          spids: [53]
        )
      spids: [48 52]
    )
    (FuncDef
      name: search_reflog_merges
      body: 
        (BraceGroup
          children: [
            (C {(git)} {(rev-parse)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (SimpleCommand
                          words: [
                            {(sed)}
                            {(-ne)}
                            {(SQ <'s~^[^ ]* \\([^ ]*\\) .*\\tmerge '>) (DQ ($ VSub_Number '$1')) 
                              (SQ <':.*~\\1^2~p'>)
                            }
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Less
                              fd: 16777215
                              arg_word: {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)}
                              spids: [113]
                            )
                          ]
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [94 121]
                )
              }
            )
          ]
          spids: [87]
        )
      spids: [82 86]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_x40)
          op: Equal
          rhs: {(DQ ('[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'))}
          spids: [126]
        )
      ]
      spids: [126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:_x40)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') 
                ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40') ($ VSub_Name '$_x40')
              )
            }
          spids: [131]
        )
      ]
      spids: [131]
    )
    (FuncDef
      name: search_merges
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(git)} {(rev-list)} {(--all)} 
                  {(--grep) (Lit_Other '=') (DQ ("Merge branch '") ($ VSub_Number '$1') ("'"))} {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%P %s'))}
                )
                (C {(sed)} {(-ne)} 
                  {
                    (DQ ('/^') ($ VSub_Name '$_x40') (' ') (Lit_Other '\\') ('(') ($ VSub_Name '$_x40') 
                      (Lit_Other '\\') (') Merge .*/ {s//') (Lit_Other '\\') ('1/p;') ($ VSub_Name '$early_exit') ('}')
                    )
                  }
                )
              ]
              negated: False
            )
          ]
          spids: [149]
        )
      spids: [144 148]
    )
    (FuncDef
      name: search_merge_targets
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(git)} {(rev-list)} {(--all)} 
                  {(--grep) (Lit_Other '=') 
                    (DQ ("Merge branch '[^']*' into ") ($ VSub_Name '$branch') 
                      (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>)
                    )
                  } {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%H %s'))} {(--all)}
                )
                (C {(sed)} {(-ne)} 
                  {
                    (DQ ('/^') (Lit_Other '\\') ('(') ($ VSub_Name '$_x40') (Lit_Other '\\') 
                      (') Merge .*/ {s//') (Lit_Other '\\') ('1/p;') ($ VSub_Name '$early_exit') ('} ')
                    )
                  }
                )
              ]
              negated: False
            )
          ]
          spids: [206]
        )
      spids: [201 205]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:dry_run) op:Equal rhs:{(SQ )} spids:[258])]
      spids: [258]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:early_exit) op:Equal rhs:{(q)} spids:[260])]
      spids: [260]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:scan_reflog) op:Equal rhs:{(t)} spids:[263])]
      spids: [263]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:scan_reflog_merges) op:Equal rhs:{(SQ )} spids:[266])]
      spids: [266]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:scan_merges) op:Equal rhs:{(SQ )} spids:[268])]
      spids: [268]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:scan_merge_targets) op:Equal rhs:{(SQ )} spids:[270])]
      spids: [270]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:new_name) op:Equal rhs:{(SQ )} spids:[272])]
      spids: [272]
    )
    (While
      cond: [
        (Sentence
          child: (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(KW_Bang '!') (Lit_Other '=')} {(0)})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-b)} {(--branch)}]
                  action: [
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:new_name)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                          spids: [310]
                        )
                      ]
                      spids: [310]
                    )
                  ]
                  spids: [301 304 316 16777215]
                )
                (case_arm
                  pat_list: [{(-n)} {(--dry-run)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:dry_run) op:Equal rhs:{(t)} spids:[325])]
                      spids: [325]
                    )
                  ]
                  spids: [319 322 329 16777215]
                )
                (case_arm
                  pat_list: [{(--no-dry-run)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dry_run)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [336]
                        )
                      ]
                      spids: [336]
                    )
                  ]
                  spids: [332 333 339 16777215]
                )
                (case_arm
                  pat_list: [{(-k)} {(--keep-going)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:early_exit)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [348]
                        )
                      ]
                      spids: [348]
                    )
                  ]
                  spids: [342 345 351 16777215]
                )
                (case_arm
                  pat_list: [{(--no-keep-going)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:early_exit)
                          op: Equal
                          rhs: {(q)}
                          spids: [358]
                        )
                      ]
                      spids: [358]
                    )
                  ]
                  spids: [354 355 362 16777215]
                )
                (case_arm
                  pat_list: [{(-m)} {(--merges)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merges)
                          op: Equal
                          rhs: {(t)}
                          spids: [371]
                        )
                      ]
                      spids: [371]
                    )
                  ]
                  spids: [365 368 375 16777215]
                )
                (case_arm
                  pat_list: [{(--no-merges)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merges)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [382]
                        )
                      ]
                      spids: [382]
                    )
                  ]
                  spids: [378 379 385 16777215]
                )
                (case_arm
                  pat_list: [{(-l)} {(--reflog)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog)
                          op: Equal
                          rhs: {(t)}
                          spids: [394]
                        )
                      ]
                      spids: [394]
                    )
                  ]
                  spids: [388 391 398 16777215]
                )
                (case_arm
                  pat_list: [{(--no-reflog)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [405]
                        )
                      ]
                      spids: [405]
                    )
                  ]
                  spids: [401 402 408 16777215]
                )
                (case_arm
                  pat_list: [{(-r)} {(--reflog_merges)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog_merges)
                          op: Equal
                          rhs: {(t)}
                          spids: [417]
                        )
                      ]
                      spids: [417]
                    )
                  ]
                  spids: [411 414 421 16777215]
                )
                (case_arm
                  pat_list: [{(--no-reflog_merges)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog_merges)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [428]
                        )
                      ]
                      spids: [428]
                    )
                  ]
                  spids: [424 425 431 16777215]
                )
                (case_arm
                  pat_list: [{(-t)} {(--merge-targets)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merge_targets)
                          op: Equal
                          rhs: {(t)}
                          spids: [440]
                        )
                      ]
                      spids: [440]
                    )
                  ]
                  spids: [434 437 444 16777215]
                )
                (case_arm
                  pat_list: [{(--no-merge-targets)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merge_targets)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [451]
                        )
                      ]
                      spids: [451]
                    )
                  ]
                  spids: [447 448 454 16777215]
                )
                (case_arm
                  pat_list: [{(-a)} {(--all)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog)
                          op: Equal
                          rhs: {(t)}
                          spids: [463]
                        )
                      ]
                      spids: [463]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_reflog_merges)
                          op: Equal
                          rhs: {(t)}
                          spids: [467]
                        )
                      ]
                      spids: [467]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merges)
                          op: Equal
                          rhs: {(t)}
                          spids: [471]
                        )
                      ]
                      spids: [471]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scan_merge_targets)
                          op: Equal
                          rhs: {(t)}
                          spids: [475]
                        )
                      ]
                      spids: [475]
                    )
                  ]
                  spids: [457 460 479 16777215]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                  spids: [482 483 492 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(C {(usage)})]
                  spids: [495 496 502 16777215]
                )
              ]
              spids: [292 298 505]
            )
            (C {(shift)})
          ]
          spids: [289 510]
        )
    )
    (AndOr
      children: [(C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(1)}) (C {(usage)})]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:all_strategies)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name '$scan_reflog') ($ VSub_Name '$scan_reflog_merges') 
                ($ VSub_Name '$scan_merges') ($ VSub_Name '$scan_merge_targets')
              )
            }
          spids: [528]
        )
      ]
      spids: [528]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$all_strategies'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(die)} {(DQ ('must enable at least one of -lrmt'))})]
          spids: [16777215 547]
        )
      ]
      spids: [16777215 556]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:branch)
          op: Equal
          rhs: {(DQ ($ VSub_Number '$1'))}
          spids: [559]
        )
      ]
      spids: [559]
    )
    (AndOr
      children: [
        (C {(test)} {(-z)} {(DQ ($ VSub_Name '$new_name'))})
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:new_name)
              op: Equal
              rhs: {(DQ ($ VSub_Name '$branch'))}
              spids: [574]
            )
          ]
          spids: [574]
        )
      ]
      op_id: Op_DAmp
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_reflog'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:candidates)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(search_reflog)} {($ VSub_Name '$branch')})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [613 617]
                                )
                              )
                            }
                          spids: [611]
                        )
                      ]
                      spids: [611]
                    )
                  ]
                  spids: [16777215 608]
                )
              ]
              else_action: [
                (C {(die)} {(SQ <'reflog scanning requested, but'>)} 
                  {(SQ <'$GIT_DIR/logs/HEAD not readable'>)}
                )
              ]
              spids: [621 637]
            )
          ]
          spids: [16777215 593]
        )
      ]
      spids: [16777215 639]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_reflog_merges'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (C {(test)} {(-r)} {(DQ ($ VSub_Name '$GIT_DIR')) (/logs/HEAD)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:candidates)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_Name '$candidates') (' ') 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(search_reflog_merges)} {($ VSub_Name '$branch')})]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [676 680]
                                )
                              )
                            }
                          spids: [672]
                        )
                      ]
                      spids: [672]
                    )
                  ]
                  spids: [16777215 669]
                )
              ]
              else_action: [
                (C {(die)} {(SQ <'reflog scanning requested, but'>)} 
                  {(SQ <'$GIT_DIR/logs/HEAD not readable'>)}
                )
              ]
              spids: [684 700]
            )
          ]
          spids: [16777215 654]
        )
      ]
      spids: [16777215 702]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_merges'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:candidates)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$candidates') (' ') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(search_merges)} {($ VSub_Name '$branch')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [724 728]
                        )
                      )
                    }
                  spids: [720]
                )
              ]
              spids: [720]
            )
          ]
          spids: [16777215 717]
        )
      ]
      spids: [16777215 731]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$scan_merge_targets'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:candidates)
                  op: Equal
                  rhs: 
                    {
                      (DQ ($ VSub_Name '$candidates') (' ') 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(search_merge_targets)} {($ VSub_Name '$branch')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [753 757]
                        )
                      )
                    }
                  spids: [749]
                )
              ]
              spids: [749]
            )
          ]
          spids: [16777215 746]
        )
      ]
      spids: [16777215 760]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:candidates)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(git)} {(rev-parse)} {($ VSub_Name '$candidates')})
                            (C {(sort)} {(-u)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [765 777]
                )
              )
            }
          spids: [763]
        )
      ]
      spids: [763]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_Name '$candidates'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:hint) op:Equal rhs:{(SQ )} spids:[795])]
              spids: [795]
            )
            (AndOr
              children: [
                (C {(test)} {(DQ (z) ($ VSub_Name '$all_strategies'))} {(KW_Bang '!') (Lit_Other '=')} 
                  {(DQ (ztttt))}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:hint)
                      op: Equal
                      rhs: {(DQ (' (maybe try again with -a)'))}
                      spids: [816]
                    )
                  ]
                  spids: [816]
                )
              ]
              op_id: Op_DAmp
            )
            (C {(die)} 
              {(DQ ('no candidates for ') ($ VSub_Name '$branch') (' found') ($ VSub_Name '$hint'))}
            )
          ]
          spids: [16777215 792]
        )
      ]
      spids: [16777215 831]
    )
    (C {(echo)} {(DQ ('** Candidates for ') ($ VSub_Name '$branch') (' **'))})
    (Pipeline
      children: [
        (ForEach
          iter_name: cmt
          iter_words: [{($ VSub_Name '$candidates')}]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [
                (C {(git)} {(--no-pager)} {(log)} 
                  {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%ct:%h [%cr] %s'))} {(--abbrev-commit)} {(-1)} {($ VSub_Name '$cmt')}
                )
              ]
              spids: [851 874]
            )
          spids: [847 849]
        )
        (C {(sort)} {(-n)})
        (C {(cut)} {(-d) (Lit_Other ':')} {(-f2-)})
      ]
      negated: False
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:newest)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [(C {(git)} {(rev-list)} {(-1)} {($ VSub_Name '$candidates')})]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [895 903]
                )
              )
            }
          spids: [893]
        )
      ]
      spids: [893]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$dry_run'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(printf)} {(DQ ('** Most recent: '))})
            (C {(git)} {(--no-pager)} {(log)} {(-1)} 
              {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')}
            )
          ]
          spids: [16777215 919]
        )
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ VSub_Name '$new_name')}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(/dev/null)}
                          spids: [961]
                        )
                      ]
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(printf)} {(DQ ('** Restoring ') ($ VSub_Name '$new_name') (' to '))})
            (C {(git)} {(--no-pager)} {(log)} {(-1)} 
              {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')}
            )
            (C {(git)} {(branch)} {($ VSub_Name '$new_name')} {($ VSub_Name '$newest')})
          ]
          spids: [947 965]
        )
      ]
      else_action: [
        (C {(printf)} {(DQ ('Most recent: '))})
        (C {(git)} {(--no-pager)} {(log)} {(-1)} 
          {(--pretty) (Lit_Other '=') (tformat) (Lit_Other ':') (DQ ('%h %s'))} {($ VSub_Name '$newest')}
        )
        (C {(echo)} {(DQ ('** ') ($ VSub_Name '$new_name') (' already exists, doing nothing'))})
      ]
      spids: [1004 1041]
    )
  ]
)