(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-n>} 
          {
            (DQ 
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
              )
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_VERSION)
          op: assign_op.Equal
          rhs: {(SQ <1.2.3pre>)}
          spids: [288]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_TRUE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [297]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_FALSE)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [300]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_ERROR)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [303]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_DEBUG)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [310]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_INFO)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [313]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_WARN)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [316]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_ERROR)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [319]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_FATAL)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [322]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEVEL_DEFAULT)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name FLAGS_LEVEL_WARN)}
          spids: [325]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: {(SQ <'expr --'>)}
          spids: [334]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_UNAME_S)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-s>}))}
          spids: [339]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name __FLAGS_UNAME_S))} 
                      {<Id.Lit_Equals '='>} {(SQ <BSD>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
                  op: assign_op.Equal
                  rhs: {(SQ <'gexpr --'>)}
                  spids: [370]
                )
              ]
            )
          ]
          spids: [348 367]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_flags_output_)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        words: [{(${ Id.VSub_Name __FLAGS_EXPR_CMD)}]
                        redirects: [
                          (redir
                            op: <Id.Redir_GreatAnd '2>&'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<1>}
                          )
                        ]
                        do_fork: T
                      )
                  )
                }
              spids: [378]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_output_))} {<Id.Lit_Equals '='>} {(SQ <-->)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
                      op: assign_op.Equal
                      rhs: {(SQ <expr>)}
                      spids: [427]
                    )
                  ]
                )
              ]
              spids: [391 420]
            )
          ]
        )
        (C {<unset>} {<_flags_output_>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_EXPR_CMD>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {(${ Id.VSub_Name __FLAGS_EXPR_CMD)}
                  )
              )
            }
          spids: [446]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_GETOPT_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_GETOPT_CMD>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<getopt>})
              )
            }
          spids: [455]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name ZSH_VERSION>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                          )
                        )
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Pipeline
              children: [
                (C {<setopt>})
                (command.Simple
                  words: [{<grep>} {(DQ <'^shwordsplit'> <Id.Lit_Dollar '$'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_fatal>} 
                      {(SQ <'zsh shwordsplit option is required for proper zsh operation'>)}
                    )
                  ]
                  spids: [499 514]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name FLAGS_PARENT>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_fatal>} 
                      {
                        (DQ <'zsh does not pass '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                          ) <'0 through properly. please declare\' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          <'FLAGS_PARENT='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <0> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) <' before calling shFlags'>
                        )
                      }
                    )
                  ]
                  spids: [527 543]
                )
              ]
            )
          ]
          spids: [466 482]
        )
      ]
    )
    (command.Subshell
      child: 
        (command.Sentence
          child: 
            (C {<echo>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name FLAGS_TRUE>
                    suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<0>})
                  )
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
      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>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                      {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [609]
                )
              ]
            )
          ]
          spids: [591 606]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
              spids: [617]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST)
          op: assign_op.Equal
          rhs: {(SQ <' ARGC ARGV ERROR FALSE GETOPT_CMD HELP PARENT TRUE '>)}
          spids: [639]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST) <' VERSION '>)}
          spids: [644]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_STD)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [656]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_ENH)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [659]
        )
      ]
    )
    (command.ShFunction
      name: _flags_getopt_vers
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_getopt_cmd_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {(${ Id.VSub_Name FLAGS_GETOPT_CMD)}
                          )
                      )
                    }
                  spids: [673]
                )
              ]
            )
            (command.Case
              to_match: 
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          words: [{(${ Id.VSub_Name _flags_getopt_cmd_)} {<-lfoo>} {(SQ )} {<--foo>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(SQ <' -- --foo'>)}]
                  action: [(C {<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)})]
                  spids: [708 711 719 -1]
                )
                (case_arm
                  pat_list: [{(SQ <' --foo --'>)}]
                  action: [(C {<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)})]
                  spids: [722 725 733 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)})]
                  spids: [740 741 749 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_getopt_cmd_>})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<_flags_getopt_vers>}))}
          spids: [764]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_SHORT)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [775]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_LONG)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [778]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_NULL)
          op: assign_op.Equal
          rhs: {(SQ <'~'>)}
          spids: [782]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_DEFAULT)
          op: assign_op.Equal
          rhs: {(SQ <default>)}
          spids: [791]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_HELP)
          op: assign_op.Equal
          rhs: {(SQ <help>)}
          spids: [796]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_SHORT)
          op: assign_op.Equal
          rhs: {(SQ <short>)}
          spids: [801]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_TYPE)
          op: assign_op.Equal
          rhs: {(SQ <type>)}
          spids: [806]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_SHORT)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [815]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_LONG)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [818]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_NONE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [825]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_BOOLEAN)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [828]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_FLOAT)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [831]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_INTEGER)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [834]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_STRING)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [837]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_constants)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<set>})
                      (C {<awk>} {<-F> <Id.Lit_Equals '='>} 
                        {(SQ <'/^FLAGS_/ || /^__FLAGS_/ {print $1}'>)}
                      )
                    ]
                    negated: F
                  )
              )
            }
          spids: [844]
        )
      ]
    )
    (command.ForEach
      iter_name: __flags_const
      iter_words: [{(${ Id.VSub_Name __flags_constants)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(${ Id.VSub_Name __flags_const)}
              arms: [
                (case_arm
                  pat_list: [{<FLAGS_HELP>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                  spids: [888 889 893 -1]
                )
                (case_arm
                  pat_list: [{<FLAGS_PARENT>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                  spids: [896 897 901 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name ZSH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<readonly>} {(DQ (${ Id.VSub_Name __flags_const))})
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                  spids: [911 927]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name ZSH_VERSION)}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_LBracket '['> <123> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}]
                  action: [(C {<readonly>} {(DQ (${ Id.VSub_Name __flags_const))})]
                  spids: [954 959 969 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<readonly>} {<-g>} {(DQ (${ Id.VSub_Name __flags_const))})]
                  spids: [972 973 985 -1]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<__flags_const>} {<__flags_constants>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_boolNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1015]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_longNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1023]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_shortNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1031]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_definedNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1039]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_columns)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [1048]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_level)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1055]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_opts)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [1061]
        )
      ]
    )
    (command.ShFunction
      name: _flags_debug
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:DEBUG '> ($ Id.VSub_Star '$*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_info
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_INFO)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:INFO '> ($ Id.VSub_Star '$*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_warn
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:WARN '> ($ Id.VSub_Star '$*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_error
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:ERROR '> ($ Id.VSub_Star '$*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_fatal
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:FATAL '> ($ Id.VSub_Star '$*'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {(${ Id.VSub_Name FLAGS_ERROR)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_loggingLevel
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<echo>} {(${ Id.VSub_Name __flags_level)})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_setLoggingLevel
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>})
                (C {<_flags_fatal>} {(DQ <'flags_setLevel(): logging level missing'>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_level_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1343]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_level_))} {<-ge>} 
                  {(DQ (${ Id.VSub_Name FLAGS_LEVEL_DEBUG))} {<-a>} {(DQ (${ Id.VSub_Name _flags_level_))} {<-le>} {(DQ (${ Id.VSub_Name FLAGS_LEVEL_FATAL))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_fatal>} 
                  {
                    (DQ <'Invalid logging level \''> (${ Id.VSub_Name _flags_level_) <'\' specified.'>)
                  }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_level)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1398]
                )
              ]
            )
            (C {<unset>} {<_flags_level_>})
          ]
        )
    )
    (command.ShFunction
      name: _flags_define
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<4>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(SQ <'DEFINE error: too few arguments'>)}
                          spids: [1486]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1492]
                        )
                      ]
                    )
                    (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {(${ Id.VSub_Name flags_return)}
                    )
                  ]
                  spids: [1470 1483]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_type_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1518]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_name_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [1522]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$3')}
                  spids: [1526]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_help_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 4>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<'ยง'>})
                      )
                    }
                  spids: [1530]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_short_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 5>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {(${ Id.VSub_Name __FLAGS_NULL)}
                          )
                      )
                    }
                  spids: [1541]
                )
              ]
            )
            (C {<_flags_debug>} 
              {
                (DQ <'type:'> (${ Id.VSub_Name _flags_type_) <' name:'> (${ Id.VSub_Name _flags_name_))
              } 
              {
                (DQ <'default:\''> (${ Id.VSub_Name _flags_default_) <'\' help:\''> 
                  (${ Id.VSub_Name _flags_help_) <'\''>
                )
              } {(DQ <'short:'> (${ Id.VSub_Name _flags_short_))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [1590]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_usName_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<_flags_underscoreName>} {(DQ (${ Id.VSub_Name _flags_name_))})
                        )
                      )
                    }
                  spids: [1596]
                )
              ]
            )
            (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
              {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(DQ <'flag name ('> (${ Id.VSub_Name _flags_name_) <') is reserved'>)}
                          spids: [1650]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_return_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1660]
                        )
                      ]
                    )
                  ]
                  spids: [1632 1647]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-ne>} 
                          {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {<-a>} {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'short flag required for ('> (${ Id.VSub_Name _flags_name_) 
                                <') on this platform'>
                              )
                            }
                          spids: [1730]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_return_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1740]
                        )
                      ]
                    )
                  ]
                  spids: [1674 1727]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                      {(DQ (${ Id.VSub_Name __flags_definedNames))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'definition for ([no]'> (${ Id.VSub_Name _flags_name_) 
                                        <') already exists'>
                                      )
                                    }
                                  spids: [1794]
                                )
                              ]
                            )
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                  spids: [1813]
                                )
                              ]
                            )
                          ]
                          spids: [1774 1791]
                        )
                      ]
                    )
                  ]
                  spids: [1754 1771]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                          {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_short_))} 
                                      {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'flag short name ('> (${ Id.VSub_Name _flags_short_) 
                                        <') already defined'>
                                      )
                                    }
                                  spids: [1889]
                                )
                              ]
                            )
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                  spids: [1908]
                                )
                              ]
                            )
                          ]
                          spids: [1869 1886]
                        )
                      ]
                    )
                  ]
                  spids: [1830 1866]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_type_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validBool>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Case
                                      to_match: {(${ Id.VSub_Name _flags_default_)}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<true>} {<t>} {<0>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                                  spids: [1998]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1991 1996 2003 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<false>} {<f>} {<1>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                                  spids: [2013]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [2006 2011 2018 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1968 1979]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [2027]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [2037]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1962 1965 2046 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validFloat>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [2056 2067]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [2076]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [2086]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2050 2053 2095 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validInt>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [2105 2116]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [2125]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [2135]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2099 2102 2144 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                          spids: [2148 2151 2153 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized flag type \''> (${ Id.VSub_Name _flags_type_) 
                                        <'\''>
                                      )
                                    }
                                  spids: [2164]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [2174]
                                )
                              ]
                            )
                          ]
                          spids: [2160 2161 2180 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1933 1950]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<eval>} 
                      {
                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                          (${ Id.VSub_Name _flags_default_) <'\''>
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_TYPE) <'='> (${ Id.VSub_Name _flags_type_)
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_default_) 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          )
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_HELP) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_help_) 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          )
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_SHORT) <'=\''> (${ Id.VSub_Name _flags_short_) <'\''>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_shortNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_shortNames) (${ Id.VSub_Name _flags_short_) 
                                <' '>
                              )
                            }
                          spids: [2312]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_longNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_longNames) (${ Id.VSub_Name _flags_name_) 
                                <' '>
                              )
                            }
                          spids: [2324]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_type_))} {<-eq>} 
                          {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:__flags_boolNames)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_boolNames) <no> 
                                    (${ Id.VSub_Name _flags_name_) <' '>
                                  )
                                }
                              spids: [2358]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_definedNames) 
                                (${ Id.VSub_Name _flags_usName_) <' '>
                              )
                            }
                          spids: [2376]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_type_))} {<-eq>} 
                          {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_definedNames) <no> 
                                    (${ Id.VSub_Name _flags_usName_) <' '>
                                  )
                                }
                              spids: [2410]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2190 2207]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _flags_return_)}
                  spids: [2427]
                )
              ]
            )
            (C {<unset>} {<_flags_default_>} {<_flags_help_>} {<_flags_name_>} {<_flags_return_>} 
              {<_flags_short_>} {<_flags_type_>} {<_flags_usName_>}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_underscoreName
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [(C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<tr>} {(SQ <->)} {(SQ <_>)})]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_genOptStr
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_optStrType_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2571]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_opts_)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [2576]
                )
              ]
            )
            (command.ForEach
              iter_name: _flags_name_
              iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (C {<_flags_underscoreName>} {(DQ (${ Id.VSub_Name _flags_name_))})
                                )
                              )
                            }
                          spids: [2596]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_type_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                      {(DQ (${ Id.VSub_Name __FLAGS_INFO_TYPE))}
                                    )
                                )
                              )
                            }
                          spids: [2612]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<_flags_fatal>} {(SQ <'call to _flags_type_ failed'>)})
                      ]
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_optStrType_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_shortName_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (C {<_flags_getFlagInfo>} 
                                              {(DQ (${ Id.VSub_Name _flags_usName_))} {(DQ (${ Id.VSub_Name __FLAGS_INFO_SHORT))}
                                            )
                                        )
                                      )
                                    }
                                  spids: [2670]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ (${ Id.VSub_Name _flags_shortName_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _flags_opts_) 
                                                (${ Id.VSub_Name _flags_shortName_)
                                              )
                                            }
                                          spids: [2722]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_type_))} 
                                          {<-ne>} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                              spids: [2759]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2697 2719]
                                )
                              ]
                            )
                          ]
                          spids: [2664 2667 2771 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name _flags_opts_>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonPlus ':+'>
                                              arg_word: {(${ Id.VSub_Name _flags_opts_) <','>}
                                            )
                                        ) (${ Id.VSub_Name _flags_name_)
                                      )
                                    }
                                  spids: [2781]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_type_))} {<-ne>} 
                                  {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                      spids: [2823]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2775 2778 2832 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {(DQ (${ Id.VSub_Name _flags_opts_))})
            (C {<unset>} {<_flags_name_>} {<_flags_opts_>} {<_flags_optStrType_>} {<_flags_shortName_>} 
              {<_flags_type_>} {<_flags_usName_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getFlagInfo
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_gFI_usName_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2919]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_gFI_info_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [2923]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_infoVar_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                        (${ Id.VSub_Name _flags_gFI_info_)
                      )
                    }
                  spids: [2940]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'_flags_infoValue_='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_infoVar_) 
                        <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                      )
                    }
                  spids: [2953]
                )
              ]
            )
            (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name _flags_infoValue_))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_gFI_info_))} 
                          {<Id.Lit_Equals '='>} {(${ Id.VSub_Name __FLAGS_INFO_HELP)} {<-a>} {(DQ (${ Id.VSub_Name _flags_infoValue_))} 
                          {<Id.Lit_Equals '='>} {(SQ <'ยง'>)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_infoValue_)
                              op: assign_op.Equal
                              rhs: {(SQ )}
                              spids: [3032]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3037]
                        )
                      ]
                    )
                  ]
                  spids: [2976 2991]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_flags_typeVar_)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_TYPE)
                          )
                        }
                      spids: [3090]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'_flags_typeValue_='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_typeVar_) 
                            <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                          )
                        }
                      spids: [3103]
                    )
                  ]
                )
                (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_typeValue_))} 
                                  {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_STRING))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:flags_return)
                              op: assign_op.Equal
                              rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                              spids: [3154]
                            )
                          ]
                        )
                      ]
                      spids: [3130 3151]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [3163]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'missing flag info variable ('> (${ Id.VSub_Name _flags_infoVar_) 
                                <')'>
                              )
                            }
                          spids: [3169]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {<echo>} {(DQ (${ Id.VSub_Name _flags_infoValue_))})
            (C {<unset>} {<_flags_gFI_usName_>} {<_flags_gfI_info_>} {<_flags_infoValue_>} 
              {<_flags_infoVar_>} {<_flags_strToEval_>} {<_flags_typeValue_>} {<_flags_typeVar_>}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_itemInList
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_str_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3285]
                )
              ]
            )
            (C {<shift>})
            (command.Case
              to_match: 
                {
                  (DQ <' '> 
                    (braced_var_sub
                      token: <Id.VSub_Star '*'>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                    ) <' '>
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                      (${ Id.VSub_Name _flags_str_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3316]
                        )
                      ]
                    )
                  ]
                  spids: [3307 3314 3321 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3327]
                        )
                      ]
                    )
                  ]
                  spids: [3324 3325 3332 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_str_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_columns
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __flags_columns))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [{<eval>} {<stty>} {<size>}]
                                      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 _>
                                )
                              ]
                            )
                          action: [
                            (C {<set>} {<-->} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<stty>} {<size>})
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:__flags_columns)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Number 2>
                                          suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                        )
                                      )
                                    }
                                  spids: [3429]
                                )
                              ]
                            )
                          ]
                          spids: [3390 3405]
                        )
                      ]
                    )
                  ]
                  spids: [3372 3387]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __flags_columns))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [{<eval>} {<tput>} {<cols>}]
                                      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 _>
                                )
                              ]
                            )
                          action: [
                            (C {<set>} {<-->} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<tput>} {<cols>})
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:__flags_columns)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Number 1>
                                          suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                        )
                                      )
                                    }
                                  spids: [3497]
                                )
                              ]
                            )
                          ]
                          spids: [3462 3477]
                        )
                      ]
                    )
                  ]
                  spids: [3444 3459]
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name __flags_columns>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<80>})
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_validBool
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_bool_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3550]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [3555]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _flags_bool_))}
              arms: [
                (case_arm pat_list:[{<true>} {<t>} {<0>}] spids:[3572 3577 3579 -1])
                (case_arm pat_list:[{<false>} {<f>} {<1>}] spids:[3582 3587 3589 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3595]
                        )
                      ]
                    )
                  ]
                  spids: [3592 3593 3600 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_bool_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_validFloat
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                  spids: [3646]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_float_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3671]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_float_))})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3690]
                        )
                      ]
                    )
                  ]
                  spids: [3676 3687]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_float_whole_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_float_>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Percent '%'>
                                    arg_word: {<.> <Id.Lit_Other '*'>}
                                  )
                              )
                            }
                          spids: [3704]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_float_fraction_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_float_>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <.>}
                                  )
                              )
                            }
                          spids: [3713]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_validInt>} 
                                      {
                                        (DQ 
                                          (braced_var_sub
                                            token: <Id.VSub_Name _flags_float_whole_>
                                            suffix_op: 
                                              (suffix_op.Unary
                                                tok: <Id.VTest_ColonHyphen ':-'>
                                                arg_word: {<0>}
                                              )
                                          )
                                        )
                                      } {<-a>} {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_float_fraction_))}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                  spids: [3750]
                                )
                              ]
                            )
                          ]
                          spids: [3722 3747]
                        )
                      ]
                    )
                    (C {<unset>} {<_flags_float_whole_>} {<_flags_float_fraction_>})
                  ]
                  spids: [3696 3701]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                      spids: [3769]
                    )
                  ]
                )
                (command.Case
                  to_match: {(${ Id.VSub_Name _flags_float_)}
                  arms: [
                    (case_arm
                      pat_list: [{<-> <Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_test_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\(-[0-9]*\\.[0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [3792]
                            )
                          ]
                        )
                      ]
                      spids: [3784 3786 3824 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_test_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\([0-9]*\\.[0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [3834]
                            )
                          ]
                        )
                      ]
                      spids: [3827 3828 3866 -1]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_test_))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_RBracket ']'>}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3893]
                        )
                      ]
                    )
                  ]
                )
                (C {<unset>} {<_flags_test_>})
              ]
            )
            (C {<unset>} {<_flags_float_>} {<_flags_float_whole_>} {<_flags_float_fraction_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_validInt
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                  spids: [3951]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_int_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3976]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name _flags_int_)}
              arms: [
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]
                  spids: [3990 3994 3996 -1]
                )
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<_flags_useBuiltin>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_int_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name _flags_int_>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: {<->}
                                          )
                                      )
                                    }
                                  spids: [4018]
                                )
                              ]
                            )
                          ]
                          spids: [4010 4015]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_int_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_int_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\([0-9][0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [4029]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [4002 4004 4058 -1]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name _flags_int_)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <0-9> 
                      <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [4082]
                        )
                      ]
                    )
                  ]
                  spids: [4074 4080 4087 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [4093]
                        )
                      ]
                    )
                  ]
                  spids: [4090 4091 4098 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_int_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getoptStandard
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [4153]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_shortOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)})
                      )
                    }
                  spids: [4159]
                )
              ]
            )
            (command.ForEach
              iter_name: _flags_opt_
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_match_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)})
                                      (C {<sed>} {(SQ <'s/ //g'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [4194]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_match_))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(SQ <'the available getopt does not support spaces in options'>)}
                                  spids: [4244]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [4250]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4217 4241]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_opts)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<getopt>}
                                      {(DQ (${ Id.VSub_Name _flags_shortOpts_))}
                                      {(DQ ($ Id.VSub_At '$@'))}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<1>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [4286]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_rtrn_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [4307]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} 
                                      {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                                  spids: [4340]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [4346]
                                )
                              ]
                            )
                          ]
                          spids: [4311 4328]
                        )
                      ]
                    )
                  ]
                  spids: [4266 4283]
                )
              ]
            )
            (C {<unset>} {<_flags_match_>} {<_flags_opt_>} {<_flags_rtrn_>} {<_flags_shortOpts_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getoptEnhanced
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [4413]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_shortOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)})
                      )
                    }
                  spids: [4419]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_boolOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ (${ Id.VSub_Name __flags_boolNames))})
                              (C {<sed>} {(SQ <'s/^ *//;s/ *$//;s/ /,/g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [4431]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_longOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)})
                      )
                    }
                  spids: [4457]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_opts)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {(${ Id.VSub_Name FLAGS_GETOPT_CMD)}
                              {<-o>}
                              {(DQ (${ Id.VSub_Name _flags_shortOpts_))}
                              {<-l>}
                              {
                                (DQ (${ Id.VSub_Name _flags_longOpts_) <','> 
                                  (${ Id.VSub_Name _flags_boolOpts_)
                                )
                              }
                              {<-->}
                              {(DQ ($ Id.VSub_At '$@'))}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [4470]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_rtrn_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [4524]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                          spids: [4557]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [4563]
                        )
                      ]
                    )
                  ]
                  spids: [4528 4545]
                )
              ]
            )
            (C {<unset>} {<_flags_boolOpts_>} {<_flags_longOpts_>} {<_flags_rtrn_>} {<_flags_shortOpts_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_parseGetopt
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_argc_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [4633]
                )
              ]
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [4641]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} 
                              {<-ne>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<set>} {<-->} {($ Id.VSub_At '$@')})]
                  spids: [4648 4669]
                )
              ]
              else_action: [(C {<eval>} {<set>} {<-->} {(DQ ($ Id.VSub_At '$@'))})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FLAGS_ARGC)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<_flags_math>} 
                            {(DQ ($ Id.VSub_Pound '$#') <' - 1 - '> (${ Id.VSub_Name _flags_argc_))}
                          )
                      )
                    }
                  spids: [4729]
                )
              ]
            )
            (C {<export>} {<FLAGS_ARGC>})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [4763]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_arg_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Number 2>
                                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{})
                              )
                            }
                          spids: [4767]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_type_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name __FLAGS_TYPE_NONE)}
                          spids: [4774]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                          op: assign_op.Equal
                          rhs: {(SQ )}
                          spids: [4780]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name _flags_opt_))}
                      arms: [
                        (case_arm
                          pat_list: [{<-->}]
                          action: [
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4801 4802 4809 -1]
                        )
                        (case_arm
                          pat_list: [{<--> <Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<_flags_useBuiltin>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _flags_opt_>
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    tok: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <-->}
                                                  )
                                              )
                                            }
                                          spids: [4832]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4824 4829]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'--\\(.*\\)'>)}
                                              )
                                          )
                                        }
                                      spids: [4844]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_len_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_LONG)}
                                  spids: [4873]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_itemInList>} 
                                              {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_longNames))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name _flags_opt_)}
                                          spids: [4899]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4879 4896]
                                )
                              ]
                              else_action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<_flags_itemInList>} 
                                                  {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_boolNames))}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Sentence
                                                      child: (C {<_flags_useBuiltin>})
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:_flags_name_)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (braced_var_sub
                                                            token: <Id.VSub_Name _flags_opt_>
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                tok: <Id.VOp1_Pound '#'>
                                                                arg_word: {<Id.Lit_Other '*'> <no>}
                                                              )
                                                          )
                                                        }
                                                      spids: [4940]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [4932 4937]
                                            )
                                          ]
                                          else_action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_name_)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                            {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'no\\(.*\\)'>)}
                                                          )
                                                      )
                                                    }
                                                  spids: [4952]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_type_)
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}
                                              spids: [4981]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_arg_)
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_NULL)}
                                              spids: [4987]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4912 4929]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [4816 4818 4999 -1]
                        )
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<_flags_useBuiltin>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _flags_opt_>
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    tok: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <->}
                                                  )
                                              )
                                            }
                                          spids: [5019]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5011 5016]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\(.*\\)'>)}
                                              )
                                          )
                                        }
                                      spids: [5031]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_len_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_SHORT)}
                                  spids: [5060]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_itemInList>} 
                                              {(DQ (${ Id.VSub_Name _flags_opt_))} {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_pos_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                                      )
                                                      (C {<awk>} 
                                                        {
                                                          (SQ 
                                                            <
'BEGIN{RS=" ";rn=0}$0==e{rn=NR}END{print rn}'
                                                            >
                                                          )
                                                        } {<Id.Lit_VarLike 'e='> (DQ (${ Id.VSub_Name _flags_opt_))}
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [5094]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name __flags_longNames))}
                                                      )
                                                      (C {<awk>} 
                                                        {(SQ <'BEGIN{RS=" "}rn==NR{print $0}'>)} {<Id.Lit_VarLike 'rn='> (DQ (${ Id.VSub_Name _flags_pos_))}
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [5132]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5066 5083]
                                )
                              ]
                            )
                          ]
                          spids: [5003 5005 5168 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ (${ Id.VSub_Name _flags_name_))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized option ('> (${ Id.VSub_Name _flags_opt_) <')'>)
                                    }
                                  spids: [5197]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [5207]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [5179 5194]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<_flags_underscoreName>} {(DQ (${ Id.VSub_Name _flags_name_))})
                              )
                            }
                          spids: [5224]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} 
                          {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_type_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                        {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                      )
                                  )
                                }
                              spids: [5256]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_type_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_len_)} 
                                              {<-eq>} {(${ Id.VSub_Name __FLAGS_LEN_LONG)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ (${ Id.VSub_Name _flags_arg_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<eval>} 
                                              {
                                                (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                                  (${ Id.VSub_Name FLAGS_TRUE)
                                                )
                                              }
                                            )
                                          ]
                                          spids: [5314 5336]
                                        )
                                      ]
                                      else_action: [
                                        (C {<eval>} 
                                          {
                                            (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                              (${ Id.VSub_Name FLAGS_FALSE)
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5294 5311]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'_flags_val_='> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                            ) <'{__flags_'> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'}'>
                                          )
                                        }
                                      spids: [5376]
                                    )
                                  ]
                                )
                                (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ (${ Id.VSub_Name _flags_val_))} {<-eq>} {(${ Id.VSub_Name FLAGS_FALSE)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<eval>} 
                                          {
                                            (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                              (${ Id.VSub_Name FLAGS_TRUE)
                                            )
                                          }
                                        )
                                      ]
                                      spids: [5406 5425]
                                    )
                                  ]
                                  else_action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                          (${ Id.VSub_Name FLAGS_FALSE)
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [5288 5291 5465 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validFloat>} 
                                              {(DQ (${ Id.VSub_Name _flags_arg_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                          (${ Id.VSub_Name _flags_arg_) <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [5475 5486]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid float value ('> (${ Id.VSub_Name _flags_arg_) 
                                            <')'>
                                          )
                                        }
                                      spids: [5507]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_return)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [5517]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [5469 5472 5529 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_arg_))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                          (${ Id.VSub_Name _flags_arg_) <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [5539 5550]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid integer value ('> 
                                            (${ Id.VSub_Name _flags_arg_) <')'>
                                          )
                                        }
                                      spids: [5571]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_return)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [5581]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [5533 5536 5593 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                          action: [
                            (C {<eval>} 
                              {
                                (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                  (${ Id.VSub_Name _flags_arg_) <'\''>
                                )
                              }
                            )
                          ]
                          spids: [5597 5600 5618 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                      {<Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ (${ Id.VSub_Name FLAGS_help))} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<flags_help>})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_error)
                                          op: assign_op.Equal
                                          rhs: {(SQ <'help requested'>)}
                                          spids: [5680]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_return)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                          spids: [5686]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [5655 5674]
                                )
                              ]
                            )
                          ]
                          spids: [5629 5648]
                        )
                      ]
                    )
                    (C {<shift>})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_type_))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<shift>})
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FLAGS_ARGV)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [5739]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FLAGS_ARGV)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name FLAGS_ARGV>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_ColonPlus ':+'>
                                      arg_word: {(${ Id.VSub_Name FLAGS_ARGV) <' '>}
                                    )
                                ) <'\''> ($ Id.VSub_Number '$1') <'\''>
                              )
                            }
                          spids: [5760]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
            (C {<unset>} {<_flags_arg_>} {<_flags_len_>} {<_flags_name_>} {<_flags_opt_>} {<_flags_pos_>} 
              {<_flags_strToEval_>} {<_flags_type_>} {<_flags_usName_>} {<_flags_val_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_math
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [5862]
                        )
                      ]
                    )
                  ]
                  spids: [5846 5859]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_expr_)
                          op: assign_op.Equal
                          rhs: {(SQ <'$(($@))'>)}
                          spids: [5888]
                        )
                      ]
                    )
                    (C {<eval>} {<echo>} {(${ Id.VSub_Name _flags_expr_)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [5903]
                        )
                      ]
                    )
                    (C {<unset>} {<_flags_expr_>})
                  ]
                  spids: [5868 5873]
                )
              ]
              else_action: [
                (C {<eval>} {<expr>} {(DQ ($ Id.VSub_At '$@'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [5924]
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_strlen
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_str_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{})
                      )
                    }
                  spids: [5972]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name _flags_str_))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_output)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [5998]
                        )
                      ]
                    )
                  ]
                  spids: [5980 5995]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_output)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_str_>
                                prefix_op: (Id.VSub_Pound)
                              )
                            }
                          spids: [6010]
                        )
                      ]
                    )
                  ]
                  spids: [6002 6007]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_output)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_str_))} 
                                {<Id.Lit_Colon ':'>} {(SQ <'.*'>)}
                              )
                          )
                        }
                      spids: [6020]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [6045]
                )
              ]
            )
            (C {<unset>} {<_flags_str_>})
            (C {<echo>} {(DQ (${ Id.VSub_Name flags_output))})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_useBuiltin
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name __FLAGS_USE_BUILTIN)}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_boolean
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_float
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_integer
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_string
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_STRING)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: FLAGS
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name __flags_help_type>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (C {<DEFINE_boolean>} {(SQ <help>)} {<false>} {(SQ <'show this help'>)} {(SQ <h>)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} 
                                      {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-ne>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<_flags_getoptStandard>} {(DQ ($ Id.VSub_At '$@'))})]
                          spids: [6320 6341]
                        )
                      ]
                      else_action: [(C {<_flags_getoptEnhanced>} {(DQ ($ Id.VSub_At '$@'))})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [6364]
                        )
                      ]
                    )
                  ]
                  spids: [6304 6317]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__flags_opts)
                      op: assign_op.Equal
                      rhs: {(SQ <-->)}
                      spids: [6375]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                      spids: [6381]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_parseGetopt>} {($ Id.VSub_Pound '$#')} 
                      {(DQ (${ Id.VSub_Name __flags_opts))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [6422]
                        )
                      ]
                    )
                  ]
                  spids: [6391 6408]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_fatal>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptInfo
      body: 
        (BraceGroup
          children: [
            (C {<_flags_debug>} 
              {
                (DQ <'uname -a: '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<uname>} {<-a>})
                  )
                )
              }
            )
            (C {<_flags_debug>} {(DQ <'PATH: '> (${ Id.VSub_Name PATH))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name BASH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_debug>} {(SQ <'shell: bash'>)})
                    (C {<_flags_debug>} {(DQ <'BASH_VERSION: '> (${ Id.VSub_Name BASH_VERSION))})
                  ]
                  spids: [6534 6550]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name ZSH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_debug>} {(SQ <'shell: zsh'>)})
                    (C {<_flags_debug>} {(DQ <'ZSH_VERSION: '> (${ Id.VSub_Name ZSH_VERSION))})
                  ]
                  spids: [6570 6586]
                )
              ]
            )
            (command.Simple
              words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_getoptReturn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [6622]
                )
              ]
            )
            (C {<_flags_debug>} {(DQ <'getopt return: '> (${ Id.VSub_Name _flags_getoptReturn))})
            (C {<_flags_debug>} 
              {
                (DQ <'getopt --version: '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<--version>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_GreatAnd '2>&'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<1>}
                          )
                        ]
                        do_fork: T
                      )
                  )
                )
              }
            )
            (C {<unset>} {<_flags_getoptReturn>})
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptIsEnh
      body: 
        (BraceGroup
          children: [
            (C {<test>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-eq>} 
              {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptIsStd
      body: 
        (BraceGroup
          children: [
            (C {<test>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-eq>} 
              {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD))}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_help
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name FLAGS_HELP>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ (${ Id.VSub_Name FLAGS_HELP))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [6791 6807]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'USAGE: '> 
                        (braced_var_sub
                          token: <Id.VSub_Name FLAGS_PARENT>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: {($ Id.VSub_Number '$0')}
                            )
                        ) <' [flags] args'>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name __flags_longNames))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(SQ <'flags:'>)}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ForEach
                      iter_name: flags_name_
                      iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                  spids: [6886]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_boolStr_)
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                  spids: [6891]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_usName_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_underscoreName>} 
                                            {(DQ (${ Id.VSub_Name flags_name_))}
                                          )
                                      )
                                    }
                                  spids: [6896]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_default_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)}
                                          )
                                      )
                                    }
                                  spids: [6911]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_help_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_HELP)}
                                          )
                                      )
                                    }
                                  spids: [6934]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_short_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                                          )
                                      )
                                    }
                                  spids: [6957]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_type_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                          )
                                      )
                                    }
                                  spids: [6980]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                      op: assign_op.Equal
                                      rhs: {(DQ <-> (${ Id.VSub_Name flags_short_))}
                                      spids: [7027]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-eq>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name flags_flagStr_) <','>)}
                                              spids: [7084]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_type_))} 
                                          {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<-a>} {(DQ (${ Id.VSub_Name flags_usName_))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_boolStr_)
                                              op: assign_op.Equal
                                              rhs: {(SQ <'[no]'>)}
                                              spids: [7134]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name flags_flagStr_) <--> 
                                                (${ Id.VSub_Name flags_boolStr_) (${ Id.VSub_Name flags_name_) <':'>
                                              )
                                            }
                                          spids: [7140]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7037 7058]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(${ Id.VSub_Name flags_type_)}
                              arms: [
                                (case_arm
                                  pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ (${ Id.VSub_Name flags_default_))} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                                  op: assign_op.Equal
                                                  rhs: {(SQ <true>)}
                                                  spids: [7197]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [7175 7194]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                              op: assign_op.Equal
                                              rhs: {(SQ <false>)}
                                              spids: [7206]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7169 7172 7215 -1]
                                )
                                (case_arm
                                  pat_list: [
                                    {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}
                                    {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name flags_default_)}
                                          spids: [7228]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7218 7225 7233 -1]
                                )
                                (case_arm
                                  pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'\''> (${ Id.VSub_Name flags_default_) <'\''>)}
                                          spids: [7241]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7236 7239 7250 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'(default: '> (${ Id.VSub_Name flags_defaultStr_) <')'>)}
                                  spids: [7256]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_helpStr_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'  '> (${ Id.VSub_Name flags_flagStr_) <'  '> 
                                        (braced_var_sub
                                          token: <Id.VSub_Name flags_help_>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonPlus ':+'>
                                              arg_word: {(${ Id.VSub_Name flags_help_) <' '>}
                                            )
                                        ) (${ Id.VSub_Name flags_defaultStr_)
                                      )
                                    }
                                  spids: [7267]
                                )
                              ]
                            )
                            (command.Simple
                              words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_helpStrLen_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name flags_output)}
                                  spids: [7300]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_columns_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<_flags_columns>})
                                      )
                                    }
                                  spids: [7306]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ (${ Id.VSub_Name flags_helpStrLen_))} {<-lt>} {(DQ (${ Id.VSub_Name flags_columns_))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [7315 7336]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {
                                      (DQ <'  '> (${ Id.VSub_Name flags_flagStr_) <'  '> 
                                        (${ Id.VSub_Name flags_help_)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_emptyStr_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (C {<echo>} 
                                                      {(DQ <x> (${ Id.VSub_Name flags_flagStr_) <x>)}
                                                    )
                                                    (C {<awk>} 
                                                      {(SQ <'{printf "%"length($0)-2"s", ""}'>)}
                                                    )
                                                  ]
                                                  negated: F
                                                )
                                            )
                                          )
                                        }
                                      spids: [7379]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_helpStr_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'  '> (${ Id.VSub_Name flags_emptyStr_) <'  '> 
                                            (${ Id.VSub_Name flags_defaultStr_)
                                          )
                                        }
                                      spids: [7413]
                                    )
                                  ]
                                )
                                (command.Simple
                                  words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_helpStrLen_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name flags_output)}
                                      spids: [7438]
                                    )
                                  ]
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))} {<-eq>} {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD))} {<-o>} {(DQ (${ Id.VSub_Name flags_helpStrLen_))} 
                                                  {<-lt>} {(DQ (${ Id.VSub_Name flags_columns_))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Simple
                                          words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_GreatAnd '>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      spids: [7445 7484]
                                    )
                                  ]
                                  else_action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {(DQ <'    '> (${ Id.VSub_Name flags_defaultStr_))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [6844 6859]
                )
              ]
            )
            (C {<unset>} {<flags_boolStr_>} {<flags_default_>} {<flags_defaultStr_>} {<flags_emptyStr_>} 
              {<flags_flagStr_>} {<flags_help_>} {<flags_helpStr>} {<flags_helpStrLen>} {<flags_name_>} {<flags_columns_>} {<flags_short_>} 
              {<flags_type_>} {<flags_usName_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_reset
      body: 
        (BraceGroup
          children: [
            (command.ForEach
              iter_name: flags_name_
              iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<_flags_underscoreName>} {(DQ (${ Id.VSub_Name flags_name_))})
                              )
                            }
                          spids: [7621]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_strToEval_)
                          op: assign_op.Equal
                          rhs: {(DQ <'unset FLAGS_'> (${ Id.VSub_Name flags_usName_))}
                          spids: [7635]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: flags_type_
                      iter_words: [
                        {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)}
                        {(${ Id.VSub_Name __FLAGS_INFO_HELP)}
                        {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                        {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_strToEval_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name flags_strToEval_) <' __flags_'> 
                                        (${ Id.VSub_Name flags_usName_) <_> (${ Id.VSub_Name flags_type_)
                                      )
                                    }
                                  spids: [7678]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<eval>} {(DQ (${ Id.VSub_Name flags_strToEval_))})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_boolNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7715]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_longNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7721]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_shortNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7727]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7733]
                )
              ]
            )
            (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)})
            (C {<unset>} {<flags_name_>} {<flags_type_>} {<flags_strToEval_>} {<flags_usName_>})
          ]
        )
    )
    (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)})
  ]
)