(command.CommandList
  children: [
    (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: {(SQ <'[--browser=browser|--tool=browser] [--config=conf.var] url/file ...'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'NONGIT_OK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'NONGIT_OK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NONGIT_OK='> name:NONGIT_OK)
          op: assign_op.Equal
          rhs: {<Yes>}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<git-sh-setup>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <valid_custom_tool>
      name: valid_custom_tool
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'browser_cmd='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'browser_cmd='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'browser_cmd='> name:browser_cmd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<config>} {(DQ <browser.> ($ Id.VSub_Number 1) <.cmd>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName browser_cmd))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <valid_tool>
      name: valid_tool
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          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: <firefox>
                  pattern: 
                    (pat.Words
                      words: [
                        {<firefox>}
                        {<iceweasel>}
                        {<seamonkey>}
                        {<iceape>}
                        {<chrome>}
                        {<google-chrome>}
                        {<chromium>}
                        {<chromium-browser>}
                        {<konqueror>}
                        {<opera>}
                        {<w3m>}
                        {<elinks>}
                        {<links>}
                        {<lynx>}
                        {<dillo>}
                        {<open>}
                        {<start>}
                        {<cygstart>}
                        {<xdg-open>}
                      ]
                    )
                  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.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <valid_custom_tool>
                          more_env: []
                          words: [{<valid_custom_tool>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <init_browser_path>
      name: init_browser_path
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'browser_path='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'browser_path='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'browser_path='> name:browser_path)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<config>} {(DQ <browser.> ($ Id.VSub_Number 1) <.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.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName browser_path))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_Number 1))}
                                {<Id.Lit_Equals '='>}
                                {<chromium>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <type>
                              more_env: []
                              words: [{<type>} {<chromium-browser>}]
                              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: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_path='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_path='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_path='>
                              name: browser_path
                            )
                          op: assign_op.Equal
                          rhs: {<chromium-browser>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [256 293]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [
                {<Id.Lit_Colon ':'>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name browser_path>
                    var_name: browser_path
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonEquals _>
                        arg_word: {(DQ ($ Id.VSub_Number 1))}
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<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>} {<--browser> <Id.Lit_Star '*'>} {<-t>} {<--tool> <Id.Lit_Star '*'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: {(DQ ($ Id.VSub_Pound '#') <','> ($ Id.VSub_Number 1))}
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> <Id.Lit_Comma ','> <Id.Lit_Star '*'> 
                                  <Id.Lit_Equals '='> <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'browser='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'browser='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'browser='>
                                      name: browser
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <expr>
                                            more_env: []
                                            words: [
                                              {<expr>}
                                              {(DQ <z> ($ Id.VSub_Number 1))}
                                              {<Id.Lit_Colon ':'>}
                                              {(SQ <'z-[^=]*=\\(.*\\)'>)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <1>
                          pattern: (pat.Words words:[{<1> <Id.Lit_Comma ','> <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.ShAssignment
                              left: <Id.Lit_VarLike 'browser='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'browser='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'browser='>
                                      name: browser
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-c>
                  pattern: (pat.Words words:[{<-c>} {<--config> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: {(DQ ($ Id.VSub_Pound '#') <','> ($ Id.VSub_Number 1))}
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> <Id.Lit_Comma ','> <Id.Lit_Star '*'> 
                                  <Id.Lit_Equals '='> <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'conf='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'conf='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'conf='> name:conf)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <expr>
                                            more_env: []
                                            words: [
                                              {<expr>}
                                              {(DQ <z> ($ Id.VSub_Number 1))}
                                              {<Id.Lit_Colon ':'>}
                                              {(SQ <'z-[^=]*=\\(.*\\)'>)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <1>
                          pattern: (pat.Words words:[{<1> <Id.Lit_Comma ','> <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.ShAssignment
                              left: <Id.Lit_VarLike 'conf='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'conf='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'conf='> name:conf)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 2))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      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.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: <usage>
          more_env: []
          words: [{<usage>}]
          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.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName browser))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [opt]
              iterable: 
                (for_iter.Words
                  words: [{(DQ ($ Id.VSub_DollarName conf))} {(DQ <web.browser>)}]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName opt))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Continue continue>
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'browser='> name:browser)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<config>} {($ Id.VSub_DollarName opt)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName browser))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  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.Sentence
                          child: 
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName browser))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <valid_tool>
                                      more_env: []
                                      words: [{<valid_tool>} {(DQ ($ Id.VSub_DollarName browser))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'git config option '> ($ Id.VSub_DollarName opt) 
                            <' set to unknown browser: '> ($ Id.VSub_DollarName browser)
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Resetting to default...'>)}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <unset>
                      more_env: []
                      words: [{<unset>} {<browser>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [624 645]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [552 562]
        )
      ]
      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.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName browser))}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          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.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName DISPLAY))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_candidates='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_candidates='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_candidates='>
                              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'
                                >
                              )
                            }
                        )
                      ]
                      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>}
                                        {(DQ ($ Id.VSub_DollarName KDE_FULL_SESSION))}
                                        {<Id.Lit_Equals '='>}
                                        {(DQ <true>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'browser_candidates='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'browser_candidates='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'browser_candidates='>
                                      name: browser_candidates
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'konqueror '> ($ Id.VSub_DollarName browser_candidates))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [716 731]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [696 707]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'browser_candidates='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'browser_candidates='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'browser_candidates='>
                          name: browser_candidates
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <'w3m elinks links lynx'>)}
                    )
                  ]
                  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.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName SECURITYSESSIONID))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName TERM_PROGRAM))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_candidates='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_candidates='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_candidates='>
                              name: browser_candidates
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'open '> ($ Id.VSub_DollarName browser_candidates))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [760 781]
                )
              ]
              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.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-x>} {<'/bin/start'>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_candidates='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_candidates='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_candidates='>
                              name: browser_candidates
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'start '> ($ Id.VSub_DollarName browser_candidates))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [798 807]
                )
              ]
              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.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-x>} {<'/usr/bin/cygstart'>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_candidates='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_candidates='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_candidates='>
                              name: browser_candidates
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'cygstart '> ($ Id.VSub_DollarName browser_candidates))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [824 833]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName browser_candidates)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <init_browser_path>
                      more_env: []
                      words: [{<init_browser_path>} {($ Id.VSub_DollarName i)}]
                      redirects: []
                      do_fork: T
                    )
                    (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: <type>
                                      more_env: []
                                      words: [{<type>} {(DQ ($ Id.VSub_DollarName browser_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
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'browser='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'browser='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'browser='>
                                      name: browser
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName i)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [864 880]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName browser))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [{<die>} {(DQ <'No known browser available.'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          spids: [681 693]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.AndOr
          children: [
            (command.Simple
              blame_tok: <valid_tool>
              more_env: []
              words: [{<valid_tool>} {(DQ ($ Id.VSub_DollarName browser))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <die>
              more_env: []
              words: [{<die>} {(DQ <'Unknown browser \''> ($ Id.VSub_DollarName browser) <'\'.'>)}]
              redirects: []
              do_fork: T
            )
          ]
          ops: [<Id.Op_DPipe _>]
        )
        (command.Simple
          blame_tok: <init_browser_path>
          more_env: []
          words: [{<init_browser_path>} {(DQ ($ Id.VSub_DollarName browser))}]
          redirects: []
          do_fork: T
        )
        (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 browser_cmd))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <type>
                                  more_env: []
                                  words: [{<type>} {(DQ ($ Id.VSub_DollarName browser_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 _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ <'The browser '> ($ Id.VSub_DollarName browser) <' is not available as \''> 
                        ($ Id.VSub_DollarName browser_path) <'\'.'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              spids: [941 969]
            )
          ]
          else_action: []
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName browser))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <firefox>
          pattern: (pat.Words words:[{<firefox>} {<iceweasel>} {<seamonkey>} {<iceape>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'vers='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'vers='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vers='> name:vers)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <expr>
                            more_env: []
                            words: [
                              {<expr>}
                              {
                                (DQ 
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <Id.VSub_DollarName '$browser_path'>
                                        more_env: []
                                        words: [{($ Id.VSub_DollarName browser_path)} {<-version>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                )
                              }
                              {<Id.Lit_Colon ':'>}
                              {(SQ <'.* \\([0-9][0-9]*\\)\\..*'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NEWTAB='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NEWTAB='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEWTAB='> name:NEWTAB)
                  op: assign_op.Equal
                  rhs: {(SQ <-new-tab>)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {(DQ ($ Id.VSub_DollarName vers))} {<-lt>} {<2>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'NEWTAB='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'NEWTAB='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEWTAB='> name:NEWTAB)
                      op: assign_op.Equal
                      rhs: {(SQ )}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [
                    {(DQ ($ Id.VSub_DollarName browser_path))}
                    {($ Id.VSub_DollarName NEWTAB)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <google-chrome>
          pattern: (pat.Words words:[{<google-chrome>} {<chrome>} {<chromium>} {<chromium-browser>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [{(DQ ($ Id.VSub_DollarName browser_path))} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <konqueror>
          pattern: (pat.Words words:[{<konqueror>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: 
                (case_arg.Word
                  w: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <basename>
                              more_env: []
                              words: [{<basename>} {(DQ ($ Id.VSub_DollarName browser_path))}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <konqueror>
                  pattern: (pat.Words words:[{<konqueror>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'browser_path='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'browser_path='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'browser_path='>
                              name: browser_path
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [{<echo>} {(DQ ($ Id.VSub_DollarName browser_path))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <sed>
                                          more_env: []
                                          words: [{<sed>} {<-e>} {(SQ <'s/konqueror$/kfmclient/'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <type>
                          more_env: []
                          words: [{<type>} {(DQ ($ Id.VSub_DollarName browser_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 <'No \''> ($ Id.VSub_DollarName browser_path) <'\' found.'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [
                            {(DQ ($ Id.VSub_DollarName browser_path))}
                            {<newTab>}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <kfmclient>
                  pattern: (pat.Words words:[{<kfmclient>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [
                            {(DQ ($ Id.VSub_DollarName browser_path))}
                            {<newTab>}
                            {(DQ ($ Id.VSub_At '@'))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [{(DQ ($ Id.VSub_DollarName browser_path))} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Amp _>
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <w3m>
          pattern: 
            (pat.Words
              words: [{<w3m>} {<elinks>} {<links>} {<lynx>} {<open>} {<cygstart>} {<xdg-open>}]
            )
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <Id.Left_DoubleQuote '"'>
              more_env: []
              words: [{(DQ ($ Id.VSub_DollarName browser_path))} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <start>
          pattern: (pat.Words words:[{<start>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <exec>
              more_env: []
              words: [
                {<exec>}
                {(DQ ($ Id.VSub_DollarName browser_path))}
                {(SQ <'"web-browse"'>)}
                {(DQ ($ Id.VSub_At '@'))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <opera>
          pattern: (pat.Words words:[{<opera>} {<dillo>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <Id.Left_DoubleQuote '"'>
                  more_env: []
                  words: [{(DQ ($ Id.VSub_DollarName browser_path))} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Amp _>
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (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>} {<-n>} {(DQ ($ Id.VSub_DollarName browser_cmd))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Subshell
                      left: <Id.Op_LParen _>
                      child: 
                        (command.Simple
                          blame_tok: <eval>
                          more_env: []
                          words: [
                            {<eval>}
                            {
                              (DQ ($ Id.VSub_DollarName browser_cmd) <' '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'@'> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Right_Subshell _>
                      redirects: []
                    )
                  ]
                  spids: [1298 1309]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
  ]
)