(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: '[--browser=browser|--tool=browser] [--config=conf.var] url/file ...'
                  span_id: 54
                )
              )
            }
          spids: [52]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NONGIT_OK)
          op: assign_op.Equal
          rhs: {(Yes)}
          spids: [64]
        )
      ]
    )
    (C {(.)} {(git-sh-setup)})
    (command.ShFunction
      name: valid_custom_tool
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:browser_cmd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:81)
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(git)} {(config)} {(DQ (browser.) ($ Id.VSub_Number '$1') (.cmd))})
                              ]
                            )
                        )
                      )
                    }
                  spids: [79]
                )
              ]
            )
            (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$browser_cmd'))})
          ]
        )
    )
    (command.ShFunction
      name: valid_tool
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(firefox)}
                    {(iceweasel)}
                    {(seamonkey)}
                    {(iceape)}
                    {(chrome)}
                    {(google-chrome)}
                    {(chromium)}
                    {(chromium-browser)}
                    {(konqueror)}
                    {(opera)}
                    {(w3m)}
                    {(elinks)}
                    {(links)}
                    {(lynx)}
                    {(dillo)}
                    {(open)}
                    {(start)}
                    {(cygstart)}
                    {(xdg-open)}
                  ]
                  spids: [122 201 204 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(valid_custom_tool)} {(DQ ($ Id.VSub_Number '$1'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Return val:return span_id:222)
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  spids: [210 211 227 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: init_browser_path
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:browser_path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:243)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(config)} {(DQ (browser.) ($ Id.VSub_Number '$1') (.path))})
                            ]
                          )
                      )
                    }
                  spids: [242]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser_path'))})
                        (C {(test)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} {(chromium)})
                        (command.Simple
                          words: [{(type)} {(chromium-browser)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:286)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:289)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_path)
                          op: assign_op.Equal
                          rhs: {(chromium-browser)}
                          spids: [296]
                        )
                      ]
                    )
                  ]
                  spids: [256 293]
                )
              ]
            )
            (C {(Id.Lit_Other ':')} 
              {
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:browser_path span_id:306)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonEquals
                      arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                )
              }
            )
          ]
        )
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:316)
      cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-b)} {(--browser) (Id.Lit_Star '*')} {(-t)} {(--tool) (Id.Lit_Star '*')}]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Pound '$#') (',') ($ Id.VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_Star '*') (Id.Lit_Comma ',') (Id.Lit_Star '*') (Id.Lit_Equals '=') 
                              (Id.Lit_Star '*')
                            }
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:browser)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 371
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(expr)} {(DQ (z) ($ Id.VSub_Number '$1'))} 
                                                {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'z-[^=]*=\\(.*\\)' span_id:382))}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [370]
                                )
                              ]
                            )
                          ]
                          spids: [362 367 387 -1]
                        )
                        (case_arm
                          pat_list: [{(1) (Id.Lit_Comma ',') (Id.Lit_Star '*')}]
                          action: [(C {(usage)})]
                          spids: [390 393 398 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:browser)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                                  spids: [405]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                          spids: [401 402 413 -1]
                        )
                      ]
                    )
                  ]
                  spids: [339 348 419 -1]
                )
                (case_arm
                  pat_list: [{(-c)} {(--config) (Id.Lit_Star '*')}]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Pound '$#') (',') ($ Id.VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_Star '*') (Id.Lit_Comma ',') (Id.Lit_Star '*') (Id.Lit_Equals '=') 
                              (Id.Lit_Star '*')
                            }
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:conf)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 449
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(expr)} {(DQ (z) ($ Id.VSub_Number '$1'))} 
                                                {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'z-[^=]*=\\(.*\\)' span_id:460))}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [448]
                                )
                              ]
                            )
                          ]
                          spids: [440 445 465 -1]
                        )
                        (case_arm
                          pat_list: [{(1) (Id.Lit_Comma ',') (Id.Lit_Star '*')}]
                          action: [(C {(usage)})]
                          spids: [468 471 476 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:conf)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                                  spids: [483]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                          spids: [479 480 491 -1]
                        )
                      ]
                    )
                  ]
                  spids: [422 426 497 -1]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:504)
                    )
                  ]
                  spids: [500 501 507 -1]
                )
                (case_arm
                  pat_list: [{(-) (Id.Lit_Star '*')}]
                  action: [(C {(usage)})]
                  spids: [510 512 518 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:525)
                    )
                  ]
                  spids: [521 522 528 -1]
                )
              ]
            )
            (C {(shift)})
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.Lit_Equals '=')} {(0)}) (C {(usage)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser'))})]
          action: [
            (command.ForEach
              iter_name: opt
              iter_words: [{(DQ ($ Id.VSub_DollarName '$conf'))} {(DQ (web.browser))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$opt'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:593)
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:598)
                                  command_list: 
                                    (command.CommandList
                                      children: [(C {(git)} {(config)} {($ Id.VSub_DollarName '$opt')})]
                                    )
                                )
                              )
                            }
                          spids: [596]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Break val:break span_id:618)
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$browser'))})
                            (command.Pipeline
                              children: [(C {(valid_tool)} {(DQ ($ Id.VSub_DollarName '$browser'))})]
                              negated: T
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:643)
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('git config option ') ($ Id.VSub_DollarName '$opt') 
                            (' set to unknown browser: ') ($ Id.VSub_DollarName '$browser')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:650)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('Resetting to default...'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:663)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (C {(unset)} {(browser)})
                  ]
                  spids: [624 645]
                )
              ]
            )
          ]
          spids: [552 562]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser'))})
              terminator: (Token id:Id.Op_Semi val:';' span_id:691)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$DISPLAY'))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:705)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_candidates)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (
'firefox iceweasel google-chrome chrome chromium chromium-browser konqueror opera seamonkey iceape w3m elinks links lynx dillo xdg-open'
                                )
                              )
                            }
                          spids: [710]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(test)} {(DQ ($ Id.VSub_DollarName '$KDE_FULL_SESSION'))} 
                                  {(Id.Lit_Equals '=')} {(DQ (true))}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:729)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:browser_candidates)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(DQ ('konqueror ') ($ Id.VSub_DollarName '$browser_candidates'))}
                                  spids: [734]
                                )
                              ]
                            )
                          ]
                          spids: [716 731]
                        )
                      ]
                    )
                  ]
                  spids: [696 707]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:browser_candidates)
                      op: assign_op.Equal
                      rhs: {(DQ ('w3m elinks links lynx'))}
                      spids: [747]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$SECURITYSESSIONID'))})
                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$TERM_PROGRAM'))})
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_candidates)
                          op: assign_op.Equal
                          rhs: {(DQ ('open ') ($ Id.VSub_DollarName '$browser_candidates'))}
                          spids: [784]
                        )
                      ]
                    )
                  ]
                  spids: [760 781]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-x)} {(/bin/start)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:805)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_candidates)
                          op: assign_op.Equal
                          rhs: {(DQ ('start ') ($ Id.VSub_DollarName '$browser_candidates'))}
                          spids: [810]
                        )
                      ]
                    )
                  ]
                  spids: [798 807]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-x)} {(/usr/bin/cygstart)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:831)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_candidates)
                          op: assign_op.Equal
                          rhs: {(DQ ('cygstart ') ($ Id.VSub_DollarName '$browser_candidates'))}
                          spids: [836]
                        )
                      ]
                    )
                  ]
                  spids: [824 833]
                )
              ]
            )
            (command.ForEach
              iter_name: i
              iter_words: [{($ Id.VSub_DollarName '$browser_candidates')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(init_browser_path)} {($ Id.VSub_DollarName '$i')})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  words: [{(type)} {(DQ ($ Id.VSub_DollarName '$browser_path'))}]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'>' span_id:872)
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                    )
                                    (redir.Redir
                                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:876)
                                      fd: 2
                                      arg_word: {(1)}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:878)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:browser)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$i')}
                                  spids: [883]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:887)
                            )
                          ]
                          spids: [864 880]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser'))})
                (C {(die)} {(DQ ('No known browser available.'))})
              ]
            )
          ]
          spids: [681 693]
        )
      ]
      else_action: [
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {(valid_tool)} {(DQ ($ Id.VSub_DollarName '$browser'))})
            (C {(die)} {(DQ ("Unknown browser '") ($ Id.VSub_DollarName '$browser') ("'."))})
          ]
        )
        (C {(init_browser_path)} {(DQ ($ Id.VSub_DollarName '$browser'))})
        (command.If
          arms: [
            (if_arm
              cond: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$browser_cmd'))})
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [{(type)} {(DQ ($ Id.VSub_DollarName '$browser_path'))}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:961)
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                )
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:965)
                                  fd: 2
                                  arg_word: {(1)}
                                )
                              ]
                            )
                          ]
                          negated: T
                        )
                      ]
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:967)
                )
              ]
              action: [
                (C {(die)} 
                  {
                    (DQ ('The browser ') ($ Id.VSub_DollarName '$browser') (" is not available as '") 
                      ($ Id.VSub_DollarName '$browser_path') ("'.")
                    )
                  }
                )
              ]
              spids: [941 969]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$browser'))}
      arms: [
        (case_arm
          pat_list: [{(firefox)} {(iceweasel)} {(seamonkey)} {(iceape)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:vers)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1011)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(expr)} 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: 
                                        (Token
                                          id: Id.Left_DollarParen
                                          val: '$('
                                          span_id: 1015
                                        )
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {($ Id.VSub_DollarName '$browser_path')} {(-version)})
                                          ]
                                        )
                                    )
                                  )
                                } {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'.* \\([0-9][0-9]*\\)\\..*' span_id:1025))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [1010]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NEWTAB)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:-new-tab span_id:1032))}
                  spids: [1030]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$vers'))} {(-lt)} {(2)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:NEWTAB)
                      op: assign_op.Equal
                      rhs: {(SQ )}
                      spids: [1048]
                    )
                  ]
                )
              ]
            )
            (command.Sentence
              child: 
                (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {($ Id.VSub_DollarName '$NEWTAB')} 
                  {(DQ ($ Id.VSub_At '$@'))}
                )
              terminator: (Token id:Id.Op_Amp val:'&' span_id:1063)
            )
          ]
          spids: [996 1003 1066 -1]
        )
        (case_arm
          pat_list: [{(google-chrome)} {(chrome)} {(chromium)} {(chromium-browser)}]
          action: [
            (command.Sentence
              child: (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Amp val:'&' span_id:1090)
            )
          ]
          spids: [1068 1075 1093 -1]
        )
        (case_arm
          pat_list: [{(konqueror)}]
          action: [
            (command.Case
              to_match: 
                {
                  (DQ 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1102)
                      command_list: 
                        (command.CommandList
                          children: [(C {(basename)} {(DQ ($ Id.VSub_DollarName '$browser_path'))})]
                        )
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(konqueror)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:browser_path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1124)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$browser_path'))})
                                            (C {(sed)} {(-e)} 
                                              {
                                                (SQ 
                                                  (Token
                                                    id: Id.Lit_Chars
                                                    val: 's/konqueror$/kfmclient/'
                                                    span_id: 1138
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              )
                            }
                          spids: [1122]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(type)} {(DQ ($ Id.VSub_DollarName '$browser_path'))}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:1150)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1154)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                        (C {(die)} {(DQ ("No '") ($ Id.VSub_DollarName '$browser_path') ("' found."))})
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(newTab)} 
                          {(DQ ($ Id.VSub_At '$@'))}
                        )
                      terminator: (Token id:Id.Op_Amp val:'&' span_id:1178)
                    )
                  ]
                  spids: [1114 1115 1181 -1]
                )
                (case_arm
                  pat_list: [{(kfmclient)}]
                  action: [
                    (command.Sentence
                      child: 
                        (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(newTab)} 
                          {(DQ ($ Id.VSub_At '$@'))}
                        )
                      terminator: (Token id:Id.Op_Amp val:'&' span_id:1198)
                    )
                  ]
                  spids: [1184 1185 1201 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Sentence
                      child: 
                        (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(DQ ($ Id.VSub_At '$@'))})
                      terminator: (Token id:Id.Op_Amp val:'&' span_id:1216)
                    )
                  ]
                  spids: [1204 1205 1219 -1]
                )
              ]
            )
          ]
          spids: [1095 1096 1225 -1]
        )
        (case_arm
          pat_list: [{(w3m)} {(elinks)} {(links)} {(lynx)} {(open)} {(cygstart)} {(xdg-open)}]
          action: [(C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [1227 1240 1252 -1]
        )
        (case_arm
          pat_list: [{(start)}]
          action: [
            (C {(exec)} {(DQ ($ Id.VSub_DollarName '$browser_path'))} 
              {(SQ (Token id:Id.Lit_Chars val:'"web-browse"' span_id:1265))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
          spids: [1254 1255 1273 -1]
        )
        (case_arm
          pat_list: [{(opera)} {(dillo)}]
          action: [
            (command.Sentence
              child: (C {(DQ ($ Id.VSub_DollarName '$browser_path'))} {(DQ ($ Id.VSub_At '$@'))})
              terminator: (Token id:Id.Op_Amp val:'&' span_id:1289)
            )
          ]
          spids: [1275 1278 1292 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$browser_cmd'))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1307)
                    )
                  ]
                  action: [
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (C {(eval)} 
                              {
                                (DQ ($ Id.VSub_DollarName '$browser_cmd') (' ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1319)
                                  ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1320)) ('@') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1322)
                                  )
                                )
                              }
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1298 1309]
                )
              ]
            )
          ]
          spids: [1294 1295 1331 -1]
        )
      ]
    )
  ]
)