(command.CommandList
  children: [
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {<-n>}
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name FLAGS_VERSION>
                  var_name: FLAGS_VERSION
                  suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                  right: <Id.Right_DollarBrace '}'>
                )
              )
            }
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_VERSION='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_VERSION='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_VERSION='> name:FLAGS_VERSION)
          op: assign_op.Equal
          rhs: {(SQ <1.2.3pre>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_TRUE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_TRUE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_TRUE='> name:FLAGS_TRUE)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_FALSE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_FALSE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_FALSE='> name:FLAGS_FALSE)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_ERROR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_ERROR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_ERROR='> name:FLAGS_ERROR)
          op: assign_op.Equal
          rhs: {<2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_LEVEL_DEBUG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_LEVEL_DEBUG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_LEVEL_DEBUG='> name:FLAGS_LEVEL_DEBUG)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_LEVEL_INFO='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_LEVEL_INFO='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_LEVEL_INFO='> name:FLAGS_LEVEL_INFO)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_LEVEL_WARN='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_LEVEL_WARN='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_LEVEL_WARN='> name:FLAGS_LEVEL_WARN)
          op: assign_op.Equal
          rhs: {<2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_LEVEL_ERROR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_LEVEL_ERROR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_LEVEL_ERROR='> name:FLAGS_LEVEL_ERROR)
          op: assign_op.Equal
          rhs: {<3>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_LEVEL_FATAL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_LEVEL_FATAL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_LEVEL_FATAL='> name:FLAGS_LEVEL_FATAL)
          op: assign_op.Equal
          rhs: {<4>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_LEVEL_DEFAULT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_LEVEL_DEFAULT='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_LEVEL_DEFAULT='>
              name: __FLAGS_LEVEL_DEFAULT
            )
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name FLAGS_LEVEL_WARN)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_EXPR_CMD='> name:__FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: {(SQ <'expr --'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_UNAME_S='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_UNAME_S='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_UNAME_S='> name:__FLAGS_UNAME_S)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <uname>
                    more_env: []
                    words: [{<uname>} {<-s>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ (${ Id.VSub_Name __FLAGS_UNAME_S))}
                        {<Id.Lit_Equals '='>}
                        {(SQ <BSD>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
                      name: __FLAGS_EXPR_CMD
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <'gexpr --'>)}
                )
              ]
              redirects: []
            )
          ]
          spids: [348 367]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike '_flags_output_='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '_flags_output_='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_output_='> name:_flags_output_)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        blame_tok: <Id.Left_DollarBrace '${'>
                        more_env: []
                        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
                      )
                    right: <Id.Backtick_Right '`'>
                  )
                }
            )
          ]
          redirects: []
        )
        (command.If
          if_kw: <Id.KW_If if>
          arms: [
            (IfArm
              keyword: <Id.KW_If if>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<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 ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike '__FLAGS_EXPR_CMD='>
                          name: __FLAGS_EXPR_CMD
                        )
                      op: assign_op.Equal
                      rhs: {(SQ <expr>)}
                    )
                  ]
                  redirects: []
                )
              ]
              spids: [391 420]
            )
          ]
          else_action: []
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
        (command.Simple
          blame_tok: <unset>
          more_env: []
          words: [{<unset>} {<_flags_output_>}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_EXPR_CMD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_EXPR_CMD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_EXPR_CMD='> name:FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name FLAGS_EXPR_CMD>
                var_name: FLAGS_EXPR_CMD
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_ColonHyphen _>
                    arg_word: {(${ Id.VSub_Name __FLAGS_EXPR_CMD)}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FLAGS_GETOPT_CMD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FLAGS_GETOPT_CMD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_GETOPT_CMD='> name:FLAGS_GETOPT_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name FLAGS_GETOPT_CMD>
                var_name: FLAGS_GETOPT_CMD
                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<getopt>})
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-n>}
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name ZSH_VERSION>
                              var_name: ZSH_VERSION
                              suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <setopt>
                  more_env: []
                  words: [{<setopt>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  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
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_QMark '?')}
                                {<-ne>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_fatal>
                      more_env: []
                      words: [
                        {<_flags_fatal>}
                        {(SQ <'zsh shwordsplit option is required for proper zsh operation'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [499 514]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name FLAGS_PARENT>
                                      var_name: FLAGS_PARENT
                                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_fatal>
                      more_env: []
                      words: [
                        {<_flags_fatal>}
                        {
                          (DQ <'zsh does not pass '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) <'0 through properly. please declare\' '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <'FLAGS_PARENT='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <0> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) <' before calling shFlags'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [527 543]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [466 482]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Subshell
      left: <Id.Op_LParen _>
      child: 
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name FLAGS_TRUE>
                      var_name: FLAGS_TRUE
                      suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<0>})
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
      right: <Id.Right_Subshell _>
      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
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-eq>}
                        {(${ Id.VSub_Name FLAGS_TRUE)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
                      name: __FLAGS_USE_BUILTIN
                    )
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
          ]
          spids: [591 606]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
              lhs: 
                (sh_lhs_expr.Name
                  left: <Id.Lit_VarLike '__FLAGS_USE_BUILTIN='>
                  name: __FLAGS_USE_BUILTIN
                )
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
              name: __FLAGS_RESERVED_LIST
            )
          op: assign_op.Equal
          rhs: {(SQ <' ARGC ARGV ERROR FALSE GETOPT_CMD HELP PARENT TRUE '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_RESERVED_LIST='>
              name: __FLAGS_RESERVED_LIST
            )
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST) <' VERSION '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_STD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_STD='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_STD='>
              name: __FLAGS_GETOPT_VERS_STD
            )
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_ENH='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_ENH='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS_ENH='>
              name: __FLAGS_GETOPT_VERS_ENH
            )
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <_flags_getopt_vers>
      name: _flags_getopt_vers
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_getopt_cmd_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_getopt_cmd_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_getopt_cmd_='>
                      name: _flags_getopt_cmd_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 1>
                        var_name: 1
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name FLAGS_GETOPT_CMD)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: 
                (case_arg.Word
                  w: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              blame_tok: <Id.Left_DollarBrace '${'>
                              more_env: []
                              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
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ <' -- --foo'>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ <' --foo --'>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_getopt_cmd_>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_GETOPT_VERS='>
              name: __FLAGS_GETOPT_VERS
            )
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <_flags_getopt_vers>
                    more_env: []
                    words: [{<_flags_getopt_vers>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_OPTSTR_SHORT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_OPTSTR_SHORT='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_OPTSTR_SHORT='>
              name: __FLAGS_OPTSTR_SHORT
            )
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_OPTSTR_LONG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_OPTSTR_LONG='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_OPTSTR_LONG='>
              name: __FLAGS_OPTSTR_LONG
            )
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_NULL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_NULL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_NULL='> name:__FLAGS_NULL)
          op: assign_op.Equal
          rhs: {(SQ <'~'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_INFO_DEFAULT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_INFO_DEFAULT='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_INFO_DEFAULT='>
              name: __FLAGS_INFO_DEFAULT
            )
          op: assign_op.Equal
          rhs: {(SQ <default>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_INFO_HELP='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_INFO_HELP='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_INFO_HELP='> name:__FLAGS_INFO_HELP)
          op: assign_op.Equal
          rhs: {(SQ <help>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_INFO_SHORT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_INFO_SHORT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_INFO_SHORT='> name:__FLAGS_INFO_SHORT)
          op: assign_op.Equal
          rhs: {(SQ <short>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_INFO_TYPE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_INFO_TYPE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_INFO_TYPE='> name:__FLAGS_INFO_TYPE)
          op: assign_op.Equal
          rhs: {(SQ <type>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_LEN_SHORT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_LEN_SHORT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_LEN_SHORT='> name:__FLAGS_LEN_SHORT)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_LEN_LONG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_LEN_LONG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_LEN_LONG='> name:__FLAGS_LEN_LONG)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_TYPE_NONE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_TYPE_NONE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_TYPE_NONE='> name:__FLAGS_TYPE_NONE)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_TYPE_BOOLEAN='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_TYPE_BOOLEAN='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_TYPE_BOOLEAN='>
              name: __FLAGS_TYPE_BOOLEAN
            )
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_TYPE_FLOAT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_TYPE_FLOAT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__FLAGS_TYPE_FLOAT='> name:__FLAGS_TYPE_FLOAT)
          op: assign_op.Equal
          rhs: {<2>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_TYPE_INTEGER='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_TYPE_INTEGER='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_TYPE_INTEGER='>
              name: __FLAGS_TYPE_INTEGER
            )
          op: assign_op.Equal
          rhs: {<3>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__FLAGS_TYPE_STRING='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__FLAGS_TYPE_STRING='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__FLAGS_TYPE_STRING='>
              name: __FLAGS_TYPE_STRING
            )
          op: assign_op.Equal
          rhs: {<4>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_constants='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_constants='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_constants='> name:__flags_constants)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <set>
                        more_env: []
                        words: [{<set>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [
                          {<awk>}
                          {<-F> <Id.Lit_Equals '='>}
                          {(SQ <'/^FLAGS_/ || /^__FLAGS_/ {print $1}'>)}
                        ]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [__flags_const]
      iterable: (for_iter.Words words:[{(${ Id.VSub_Name __flags_constants)}])
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name __flags_const)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <FLAGS_HELP>
                  pattern: (pat.Words words:[{<FLAGS_HELP>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <FLAGS_PARENT>
                  pattern: (pat.Words words:[{<FLAGS_PARENT>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ZSH_VERSION>
                                      var_name: ZSH_VERSION
                                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <readonly>
                      more_env: []
                      words: [{<readonly>} {(DQ (${ Id.VSub_Name __flags_const))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  spids: [911 927]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name ZSH_VERSION)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_LBracket '['>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_LBracket '['> <123> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <readonly>
                      more_env: []
                      words: [{<readonly>} {(DQ (${ Id.VSub_Name __flags_const))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <readonly>
                      more_env: []
                      words: [{<readonly>} {<-g>} {(DQ (${ Id.VSub_Name __flags_const))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<__flags_const>} {<__flags_constants>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_boolNames='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_boolNames='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_boolNames='> name:__flags_boolNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_longNames='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_longNames='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_longNames='> name:__flags_longNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_shortNames='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_shortNames='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_shortNames='> name:__flags_shortNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_definedNames='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_definedNames='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike '__flags_definedNames='>
              name: __flags_definedNames
            )
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_columns='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_columns='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_columns='> name:__flags_columns)
          op: assign_op.Equal
          rhs: {(SQ )}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_level='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_level='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_level='> name:__flags_level)
          op: assign_op.Equal
          rhs: {<0>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '__flags_opts='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '__flags_opts='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_opts='> name:__flags_opts)
          op: assign_op.Equal
          rhs: {(SQ )}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <_flags_debug>
      name: _flags_debug
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name __flags_level)}
                    {<-le>}
                    {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_info>
      name: _flags_info
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name __flags_level)}
                    {<-le>}
                    {(${ Id.VSub_Name FLAGS_LEVEL_INFO)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_warn>
      name: _flags_warn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name __flags_level)}
                    {<-le>}
                    {(${ Id.VSub_Name FLAGS_LEVEL_WARN)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_error>
      name: _flags_error
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name __flags_level)}
                    {<-le>}
                    {(${ Id.VSub_Name FLAGS_LEVEL_ERROR)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_fatal>
      name: _flags_fatal
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name __flags_level)}
                    {<-le>}
                    {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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
              keyword: <Id.ControlFlow_Exit exit>
              arg_word: {(${ Id.VSub_Name FLAGS_ERROR)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_loggingLevel>
      name: flags_loggingLevel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(${ Id.VSub_Name __flags_level)}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_setLoggingLevel>
      name: flags_setLoggingLevel
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_Pound '#')}
                    {<-ne>}
                    {<1>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_flags_fatal>
                  more_env: []
                  words: [{<_flags_fatal>} {(DQ <'flags_setLevel(): logging level missing'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_level_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_level_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_level_='> name:_flags_level_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<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 ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_flags_fatal>
                  more_env: []
                  words: [
                    {<_flags_fatal>}
                    {
                      (DQ <'Invalid logging level \''> (${ Id.VSub_Name _flags_level_) 
                        <'\' specified.'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_level='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_level='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_level='> name:__flags_level)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_level_>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_define>
      name: _flags_define
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-lt>}
                                {<4>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_error='>
                              name: flags_error
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'DEFINE error: too few arguments'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <_flags_error>
                      more_env: []
                      words: [{<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {(${ Id.VSub_Name flags_return)}
                    )
                  ]
                  spids: [1470 1483]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_type_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_type_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_type_='> name:_flags_type_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_name_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_name_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_name_='> name:_flags_name_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_default_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_default_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_default_='>
                      name: _flags_default_
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 3)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_help_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_help_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_help_='> name:_flags_help_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 4>
                        var_name: 4
                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<'§'>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_short_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_short_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_short_='> name:_flags_short_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 5>
                        var_name: 5
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonHyphen _>
                            arg_word: {(${ Id.VSub_Name __FLAGS_NULL)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <_flags_debug>
              more_env: []
              words: [
                {<_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_))}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_return_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_return_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_return_='> name:_flags_return_)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_usName_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_usName_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_usName_='> name:_flags_usName_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              blame_tok: <_flags_underscoreName>
                              more_env: []
                              words: [{<_flags_underscoreName>} {(DQ (${ Id.VSub_Name _flags_name_))}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <_flags_itemInList>
              more_env: []
              words: [
                {<_flags_itemInList>}
                {(DQ (${ Id.VSub_Name _flags_usName_))}
                {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST))}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_QMark '?')}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_error='>
                              name: flags_error
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'flag name ('> (${ Id.VSub_Name _flags_name_) <') is reserved'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_return_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_return_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_return_='>
                              name: _flags_return_
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1632 1647]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<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 ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_error='>
                              name: flags_error
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'short flag required for ('> (${ Id.VSub_Name _flags_name_) 
                                <') on this platform'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_return_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_return_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_return_='>
                              name: _flags_return_
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1674 1727]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name _flags_return_)}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_itemInList>
                                      more_env: []
                                      words: [
                                        {<_flags_itemInList>}
                                        {(DQ (${ Id.VSub_Name _flags_usName_))}
                                        {(DQ (${ Id.VSub_Name __flags_definedNames))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'definition for ([no]'> (${ Id.VSub_Name _flags_name_) 
                                        <') already exists'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <_flags_warn>
                              more_env: []
                              words: [{<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_return_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      name: _flags_return_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1774 1791]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1754 1771]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<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 ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_itemInList>
                                      more_env: []
                                      words: [
                                        {<_flags_itemInList>}
                                        {(DQ (${ Id.VSub_Name _flags_short_))}
                                        {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'flag short name ('> (${ Id.VSub_Name _flags_short_) 
                                        <') already defined'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <_flags_warn>
                              more_env: []
                              words: [{<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_return_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      name: _flags_return_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [1869 1886]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1830 1866]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name _flags_return_)}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_type_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_validBool>
                                              more_env: []
                                              words: [
                                                {<_flags_validBool>}
                                                {(DQ (${ Id.VSub_Name _flags_default_))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_default_)})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <true>
                                          pattern: (pat.Words words:[{<true>} {<t>} {<0>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike '_flags_default_='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike '_flags_default_='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike '_flags_default_='>
                                                      name: _flags_default_
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <false>
                                          pattern: (pat.Words words:[{<false>} {<f>} {<1>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike '_flags_default_='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike '_flags_default_='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike '_flags_default_='>
                                                      name: _flags_default_
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                  ]
                                  spids: [1968 1979]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          name: flags_error
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_return_='>
                                          name: _flags_return_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_validFloat>
                                              more_env: []
                                              words: [
                                                {<_flags_validFloat>}
                                                {(DQ (${ Id.VSub_Name _flags_default_))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_Colon ':'>
                                      more_env: []
                                      words: [{<Id.Lit_Colon ':'>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [2056 2067]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          name: flags_error
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_return_='>
                                          name: _flags_return_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_validInt>
                                              more_env: []
                                              words: [
                                                {<_flags_validInt>}
                                                {(DQ (${ Id.VSub_Name _flags_default_))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_Colon ':'>
                                      more_env: []
                                      words: [{<Id.Lit_Colon ':'>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [2105 2116]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          name: flags_error
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_return_='>
                                          name: _flags_return_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}])
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized flag type \''> (${ Id.VSub_Name _flags_type_) 
                                        <'\''>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_return_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_return_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_return_='>
                                      name: _flags_return_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [1933 1950]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name _flags_return_)}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                            (${ Id.VSub_Name _flags_default_) <'\''>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_TYPE) <'='> (${ Id.VSub_Name _flags_type_)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                            (${ Id.VSub_Name _flags_default_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_HELP) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name _flags_help_) 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_SHORT) <'=\''> (${ Id.VSub_Name _flags_short_) <'\''>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '__flags_shortNames='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '__flags_shortNames='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '__flags_shortNames='>
                              name: __flags_shortNames
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_shortNames) (${ Id.VSub_Name _flags_short_) 
                                <' '>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '__flags_longNames='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '__flags_longNames='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '__flags_longNames='>
                              name: __flags_longNames
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_longNames) (${ Id.VSub_Name _flags_name_) 
                                <' '>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ (${ Id.VSub_Name _flags_type_))}
                            {<-eq>}
                            {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '__flags_boolNames='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '__flags_boolNames='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '__flags_boolNames='>
                                  name: __flags_boolNames
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_boolNames) <no> 
                                    (${ Id.VSub_Name _flags_name_) <' '>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '__flags_definedNames='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '__flags_definedNames='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '__flags_definedNames='>
                              name: __flags_definedNames
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_definedNames) 
                                (${ Id.VSub_Name _flags_usName_) <' '>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ (${ Id.VSub_Name _flags_type_))}
                            {<-eq>}
                            {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '__flags_definedNames='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '__flags_definedNames='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '__flags_definedNames='>
                                  name: __flags_definedNames
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_definedNames) <no> 
                                    (${ Id.VSub_Name _flags_usName_) <' '>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [2190 2207]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _flags_return_)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<_flags_default_>}
                {<_flags_help_>}
                {<_flags_name_>}
                {<_flags_return_>}
                {<_flags_short_>}
                {<_flags_type_>}
                {<_flags_usName_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name flags_return)}
                    {<-eq>}
                    {(${ Id.VSub_Name FLAGS_ERROR)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_flags_error>
                  more_env: []
                  words: [{<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_underscoreName>
      name: _flags_underscoreName
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <->)} {(SQ <_>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_genOptStr>
      name: _flags_genOptStr
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_optStrType_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_optStrType_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_optStrType_='>
                      name: _flags_optStrType_
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_opts_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_opts_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_opts_='> name:_flags_opts_)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_flags_name_]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name __flags_longNames)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_usName_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_usName_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_usName_='>
                              name: _flags_usName_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_underscoreName>
                                      more_env: []
                                      words: [
                                        {<_flags_underscoreName>}
                                        {(DQ (${ Id.VSub_Name _flags_name_))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_type_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_type_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_type_='>
                              name: _flags_type_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_getFlagInfo>
                                      more_env: []
                                      words: [
                                        {<_flags_getFlagInfo>}
                                        {(DQ (${ Id.VSub_Name _flags_usName_))}
                                        {(DQ (${ Id.VSub_Name __FLAGS_INFO_TYPE))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {($ Id.VSub_QMark '?')}
                            {<-eq>}
                            {(${ Id.VSub_Name FLAGS_TRUE)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <_flags_fatal>
                          more_env: []
                          words: [{<_flags_fatal>} {(SQ <'call to _flags_type_ failed'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_optStrType_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_shortName_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_shortName_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_shortName_='>
                                      name: _flags_shortName_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_getFlagInfo>
                                              more_env: []
                                              words: [
                                                {<_flags_getFlagInfo>}
                                                {(DQ (${ Id.VSub_Name _flags_usName_))}
                                                {(DQ (${ Id.VSub_Name __FLAGS_INFO_SHORT))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Backtick_Right '`'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name _flags_shortName_))}
                                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                {(DQ (${ Id.VSub_Name __FLAGS_NULL))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_opts_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_opts_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_opts_='>
                                              name: _flags_opts_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _flags_opts_) 
                                                (${ Id.VSub_Name _flags_shortName_)
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name _flags_type_))}
                                            {<-ne>}
                                            {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike '_flags_opts_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike '_flags_opts_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike '_flags_opts_='>
                                                  name: _flags_opts_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                  ]
                                  spids: [2697 2719]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_opts_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_opts_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_opts_='>
                                      name: _flags_opts_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name _flags_opts_>
                                          var_name: _flags_opts_
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonPlus _>
                                              arg_word: {(${ Id.VSub_Name _flags_opts_) <','>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        ) (${ Id.VSub_Name _flags_name_)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ (${ Id.VSub_Name _flags_type_))}
                                    {<-ne>}
                                    {(DQ (${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_opts_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_opts_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_opts_='>
                                          name: _flags_opts_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name _flags_opts_))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<_flags_name_>}
                {<_flags_opts_>}
                {<_flags_optStrType_>}
                {<_flags_shortName_>}
                {<_flags_type_>}
                {<_flags_usName_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_getFlagInfo>
      name: _flags_getFlagInfo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_gFI_usName_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_gFI_usName_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_gFI_usName_='>
                      name: _flags_gFI_usName_
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_gFI_info_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_gFI_info_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_gFI_info_='>
                      name: _flags_gFI_info_
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_infoVar_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_infoVar_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_infoVar_='>
                      name: _flags_infoVar_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                        (${ Id.VSub_Name _flags_gFI_info_)
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_strToEval_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_strToEval_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_strToEval_='>
                      name: _flags_strToEval_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'_flags_infoValue_='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> 
                        (${ Id.VSub_Name _flags_infoVar_) <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [{<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {(DQ (${ Id.VSub_Name _flags_infoValue_))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<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 ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '_flags_infoValue_='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '_flags_infoValue_='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_flags_infoValue_='>
                                  name: _flags_infoValue_
                                )
                              op: assign_op.Equal
                              rhs: {(SQ )}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [2976 2991]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike '_flags_typeVar_='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '_flags_typeVar_='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike '_flags_typeVar_='>
                          name: _flags_typeVar_
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_TYPE)
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike '_flags_strToEval_='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '_flags_strToEval_='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike '_flags_strToEval_='>
                          name: _flags_strToEval_
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'_flags_typeValue_='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                              ch: '"'
                            ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'{'> 
                            (${ Id.VSub_Name _flags_typeVar_) <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [{<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ (${ Id.VSub_Name _flags_typeValue_))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ (${ Id.VSub_Name __FLAGS_TYPE_STRING))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'flags_return='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'flags_return='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  name: flags_return
                                )
                              op: assign_op.Equal
                              rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [3130 3151]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_error='>
                              name: flags_error
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'missing flag info variable ('> (${ Id.VSub_Name _flags_infoVar_) 
                                <')'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name _flags_infoValue_))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<_flags_gFI_usName_>}
                {<_flags_gfI_info_>}
                {<_flags_infoValue_>}
                {<_flags_infoVar_>}
                {<_flags_strToEval_>}
                {<_flags_typeValue_>}
                {<_flags_typeVar_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name flags_return)}
                    {<-eq>}
                    {(${ Id.VSub_Name FLAGS_ERROR)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_flags_error>
                  more_env: []
                  words: [{<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_itemInList>
      name: _flags_itemInList
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_str_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_str_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_str_='> name:_flags_str_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: 
                (case_arg.Word
                  w: 
                    {
                      (DQ <' '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Star '*'>
                          var_name: '*'
                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                          right: <Id.Right_DollarBrace '}'>
                        ) <' '>
                      )
                    }
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\ '>
                            ch: ' '
                          ) (${ Id.VSub_Name _flags_str_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '> ch:' ') 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_str_>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_columns>
      name: _flags_columns
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name __flags_columns))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <eval>
                                      more_env: []
                                      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 _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [
                                {<set>}
                                {<-->}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <stty>
                                        more_env: []
                                        words: [{<stty>} {<size>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '__flags_columns='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '__flags_columns='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '__flags_columns='>
                                      name: __flags_columns
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 2>
                                          var_name: 2
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3390 3405]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [3372 3387]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name __flags_columns))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <eval>
                                      more_env: []
                                      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 _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [
                                {<set>}
                                {<-->}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <tput>
                                        more_env: []
                                        words: [{<tput>} {<cols>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '__flags_columns='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '__flags_columns='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '__flags_columns='>
                                      name: __flags_columns
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Number 1>
                                          var_name: 1
                                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3462 3477]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [3444 3459]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name __flags_columns>
                      var_name: __flags_columns
                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<80>})
                      right: <Id.Right_DollarBrace '}'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_validBool>
      name: _flags_validBool
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_bool_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_bool_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_bool_='> name:_flags_bool_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name _flags_bool_))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <true>
                  pattern: (pat.Words words:[{<true>} {<t>} {<0>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <false>
                  pattern: (pat.Words words:[{<false>} {<f>} {<1>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_bool_>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_validFloat>
      name: _flags_validFloat
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-n>}
                    {(DQ ($ Id.VSub_Number 1))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_float_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_float_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_float_='> name:_flags_float_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_flags_validInt>
                              more_env: []
                              words: [{<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_float_))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3676 3687]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_flags_useBuiltin>
                              more_env: []
                              words: [{<_flags_useBuiltin>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_float_whole_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_float_whole_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_float_whole_='>
                              name: _flags_float_whole_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name _flags_float_>
                                var_name: _flags_float_
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Percent '%'>
                                    arg_word: {<.> <Id.Lit_Other '*'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_float_fraction_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_float_fraction_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_float_fraction_='>
                              name: _flags_float_fraction_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name _flags_float_>
                                var_name: _flags_float_
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <.>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_validInt>
                                      more_env: []
                                      words: [
                                        {<_flags_validInt>}
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Name _flags_float_whole_>
                                              var_name: _flags_float_whole_
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op: <Id.VTest_ColonHyphen _>
                                                  arg_word: {<0>}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                        {<-a>}
                                        {<_flags_validInt>}
                                        {(DQ (${ Id.VSub_Name _flags_float_fraction_))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_return='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      name: flags_return
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3722 3747]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <unset>
                      more_env: []
                      words: [{<unset>} {<_flags_float_whole_>} {<_flags_float_fraction_>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3696 3701]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'flags_return='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'flags_return='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                    )
                  ]
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_float_)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <->
                      pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '_flags_test_='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '_flags_test_='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_flags_test_='>
                                  name: _flags_test_
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <Id.Left_DollarBrace '${'>
                                        more_env: []
                                        words: [
                                          {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                          {(DQ (${ Id.VSub_Name _flags_float_))}
                                          {<Id.Lit_Colon ':'>}
                                          {(SQ <'\\(-[0-9]*\\.[0-9]*\\)'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '_flags_test_='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '_flags_test_='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_flags_test_='>
                                  name: _flags_test_
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <Id.Left_DollarBrace '${'>
                                        more_env: []
                                        words: [
                                          {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                          {(DQ (${ Id.VSub_Name _flags_float_))}
                                          {<Id.Lit_Colon ':'>}
                                          {(SQ <'\\([0-9]*\\.[0-9]*\\)'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ (${ Id.VSub_Name _flags_test_))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ (${ Id.VSub_Name _flags_float_))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
                (command.Simple
                  blame_tok: <unset>
                  more_env: []
                  words: [{<unset>} {<_flags_test_>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_float_>} {<_flags_float_whole_>} {<_flags_float_fraction_>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_validInt>
      name: _flags_validInt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-n>}
                    {(DQ ($ Id.VSub_Number 1))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_int_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_int_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_int_='> name:_flags_int_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_int_)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <_flags_useBuiltin>
                                      more_env: []
                                      words: [{<_flags_useBuiltin>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_int_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_int_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_int_='>
                                      name: _flags_int_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name _flags_int_>
                                        var_name: _flags_int_
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<->}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [4010 4015]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '_flags_int_='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '_flags_int_='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_flags_int_='>
                                  name: _flags_int_
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <Id.Left_DollarBrace '${'>
                                        more_env: []
                                        words: [
                                          {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                          {(DQ (${ Id.VSub_Name _flags_int_))}
                                          {<Id.Lit_Colon ':'>}
                                          {(SQ <'-\\([0-9][0-9]*\\)'>)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_int_)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <0-9> 
                          <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_int_>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_getoptStandard>
      name: _flags_getoptStandard
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_shortOpts_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_shortOpts_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_shortOpts_='>
                      name: _flags_shortOpts_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <_flags_genOptStr>
                            more_env: []
                            words: [{<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_flags_opt_]
              iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_match_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_match_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_match_='>
                              name: _flags_match_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <sed>
                                        more_env: []
                                        words: [{<sed>} {(SQ <'s/ //g'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<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 ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {(SQ <'the available getopt does not support spaces in options'>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_return='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      name: flags_return
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4217 4241]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name flags_return)}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '__flags_opts='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '__flags_opts='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '__flags_opts='>
                              name: __flags_opts
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <getopt>
                                    more_env: []
                                    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
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_rtrn_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_rtrn_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_rtrn_='>
                              name: _flags_rtrn_
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(${ Id.VSub_Name _flags_rtrn_)}
                                        {<-ne>}
                                        {(${ Id.VSub_Name FLAGS_TRUE)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <_flags_warn>
                              more_env: []
                              words: [{<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_return='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      name: flags_return
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [4311 4328]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [4266 4283]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_match_>} {<_flags_opt_>} {<_flags_rtrn_>} {<_flags_shortOpts_>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_getoptEnhanced>
      name: _flags_getoptEnhanced
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_shortOpts_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_shortOpts_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_shortOpts_='>
                      name: _flags_shortOpts_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <_flags_genOptStr>
                            more_env: []
                            words: [{<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_boolOpts_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_boolOpts_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_boolOpts_='>
                      name: _flags_boolOpts_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {(DQ (${ Id.VSub_Name __flags_boolNames))}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [{<sed>} {(SQ <'s/^ *//;s/ *$//;s/ /,/g'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_longOpts_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_longOpts_='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_longOpts_='>
                      name: _flags_longOpts_
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <_flags_genOptStr>
                            more_env: []
                            words: [{<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_opts='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_opts='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_opts='> name:__flags_opts)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <Id.Left_DollarBrace '${'>
                            more_env: []
                            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
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_rtrn_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_rtrn_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_rtrn_='> name:_flags_rtrn_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name _flags_rtrn_)}
                                {<-ne>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_warn>
                      more_env: []
                      words: [{<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_error='>
                              name: flags_error
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [4528 4545]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<_flags_boolOpts_>}
                {<_flags_longOpts_>}
                {<_flags_rtrn_>}
                {<_flags_shortOpts_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_parseGetopt>
      name: _flags_parseGetopt
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_argc_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_argc_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_argc_='> name:_flags_argc_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))}
                                {<-ne>}
                                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<-->} {($ Id.VSub_At '@')}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [4648 4669]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [{<eval>} {<set>} {<-->} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FLAGS_ARGC='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FLAGS_ARGC='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_ARGC='> name:FLAGS_ARGC)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <_flags_math>
                            more_env: []
                            words: [
                              {<_flags_math>}
                              {(DQ ($ Id.VSub_Pound '#') <' - 1 - '> (${ Id.VSub_Name _flags_argc_))}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [{<export>} {<FLAGS_ARGC>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_opt_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_opt_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_opt_='>
                              name: _flags_opt_
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_arg_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_arg_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_arg_='>
                              name: _flags_arg_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Number 2>
                                var_name: 2
                                suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_type_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_type_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_type_='>
                              name: _flags_type_
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name __FLAGS_TYPE_NONE)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_name_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_name_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_name_='>
                              name: _flags_name_
                            )
                          op: assign_op.Equal
                          rhs: {(SQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ (${ Id.VSub_Name _flags_opt_))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<--> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_useBuiltin>
                                              more_env: []
                                              words: [{<_flags_useBuiltin>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_opt_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_opt_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_opt_='>
                                              name: _flags_opt_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name _flags_opt_>
                                                var_name: _flags_opt_
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <-->}
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4824 4829]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_opt_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_opt_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_opt_='>
                                          name: _flags_opt_
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                blame_tok: <Id.Left_DollarBrace '${'>
                                                more_env: []
                                                words: [
                                                  {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                                  {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                  {<Id.Lit_Colon ':'>}
                                                  {(SQ <'--\\(.*\\)'>)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_len_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_len_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_len_='>
                                      name: _flags_len_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_LONG)}
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_itemInList>
                                              more_env: []
                                              words: [
                                                {<_flags_itemInList>}
                                                {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                {(DQ (${ Id.VSub_Name __flags_longNames))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_name_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_name_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_name_='>
                                              name: _flags_name_
                                            )
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name _flags_opt_)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4879 4896]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.Simple
                                                  blame_tok: <_flags_itemInList>
                                                  more_env: []
                                                  words: [
                                                    {<_flags_itemInList>}
                                                    {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                    {(DQ (${ Id.VSub_Name __flags_boolNames))}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.If
                                          if_kw: <Id.KW_If if>
                                          arms: [
                                            (IfArm
                                              keyword: <Id.KW_If if>
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Sentence
                                                      child: 
                                                        (command.Simple
                                                          blame_tok: <_flags_useBuiltin>
                                                          more_env: []
                                                          words: [{<_flags_useBuiltin>}]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                )
                                              then_kw: <Id.KW_Then then>
                                              action: [
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike '_flags_name_='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike '_flags_name_='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike '_flags_name_='>
                                                          name: _flags_name_
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (BracedVarSub
                                                            left: <Id.Left_DollarBrace '${'>
                                                            token: <Id.VSub_Name _flags_opt_>
                                                            var_name: _flags_opt_
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                op: <Id.VOp1_Pound '#'>
                                                                arg_word: {<Id.Lit_Other '*'> <no>}
                                                              )
                                                            right: <Id.Right_DollarBrace '}'>
                                                          )
                                                        }
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              spids: [4932 4937]
                                            )
                                          ]
                                          else_kw: <Id.KW_Else else>
                                          else_action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike '_flags_name_='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike '_flags_name_='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike '_flags_name_='>
                                                      name: _flags_name_
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <Id.Left_DollarBrace '${'>
                                                            more_env: []
                                                            words: [
                                                              {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                                              {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                              {<Id.Lit_Colon ':'>}
                                                              {(SQ <'no\\(.*\\)'>)}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Backtick_Right '`'>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          fi_kw: <Id.KW_Fi fi>
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike '_flags_type_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike '_flags_type_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike '_flags_type_='>
                                                  name: _flags_type_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike '_flags_arg_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike '_flags_arg_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike '_flags_arg_='>
                                                  name: _flags_arg_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_NULL)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [4912 4929]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_useBuiltin>
                                              more_env: []
                                              words: [{<_flags_useBuiltin>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_opt_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_opt_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_opt_='>
                                              name: _flags_opt_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name _flags_opt_>
                                                var_name: _flags_opt_
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <->}
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [5011 5016]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_opt_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_opt_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_opt_='>
                                          name: _flags_opt_
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                blame_tok: <Id.Left_DollarBrace '${'>
                                                more_env: []
                                                words: [
                                                  {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                                  {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                  {<Id.Lit_Colon ':'>}
                                                  {(SQ <'-\\(.*\\)'>)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_flags_len_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_flags_len_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike '_flags_len_='>
                                      name: _flags_len_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_SHORT)}
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_itemInList>
                                              more_env: []
                                              words: [
                                                {<_flags_itemInList>}
                                                {(DQ (${ Id.VSub_Name _flags_opt_))}
                                                {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_pos_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_pos_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_pos_='>
                                              name: _flags_pos_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <echo>
                                                        more_env: []
                                                        words: [
                                                          {<echo>}
                                                          {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <awk>
                                                        more_env: []
                                                        words: [
                                                          {<awk>}
                                                          {
                                                            (SQ 
                                                              <
'BEGIN{RS=" ";rn=0}$0==e{rn=NR}END{print rn}'
                                                              >
                                                            )
                                                          }
                                                          {<Id.Lit_VarLike 'e='> 
                                                            (DQ (${ Id.VSub_Name _flags_opt_))
                                                          }
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_flags_name_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_flags_name_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_flags_name_='>
                                              name: _flags_name_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <echo>
                                                        more_env: []
                                                        words: [
                                                          {<echo>}
                                                          {(DQ (${ Id.VSub_Name __flags_longNames))}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <awk>
                                                        more_env: []
                                                        words: [
                                                          {<awk>}
                                                          {(SQ <'BEGIN{RS=" "}rn==NR{print $0}'>)}
                                                          {<Id.Lit_VarLike 'rn='> 
                                                            (DQ (${ Id.VSub_Name _flags_pos_))
                                                          }
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [5066 5083]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-z>}
                                        {(DQ (${ Id.VSub_Name _flags_name_))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_error='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      name: flags_error
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized option ('> (${ Id.VSub_Name _flags_opt_) <')'>)
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_return='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      name: flags_return
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [5179 5194]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_usName_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_usName_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_usName_='>
                              name: _flags_usName_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <_flags_underscoreName>
                                    more_env: []
                                    words: [
                                      {<_flags_underscoreName>}
                                      {(DQ (${ Id.VSub_Name _flags_name_))}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(${ Id.VSub_Name _flags_type_)}
                            {<-eq>}
                            {(${ Id.VSub_Name __FLAGS_TYPE_NONE)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike '_flags_type_='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike '_flags_type_='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike '_flags_type_='>
                                  name: _flags_type_
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <_flags_getFlagInfo>
                                        more_env: []
                                        words: [
                                          {<_flags_getFlagInfo>}
                                          {(DQ (${ Id.VSub_Name _flags_usName_))}
                                          {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(${ Id.VSub_Name _flags_type_)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(${ Id.VSub_Name _flags_len_)}
                                                {<-eq>}
                                                {(${ Id.VSub_Name __FLAGS_LEN_LONG)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <Id.Lit_LBracket '['>
                                                      more_env: []
                                                      words: [
                                                        {<Id.Lit_LBracket '['>}
                                                        {(DQ (${ Id.VSub_Name _flags_arg_))}
                                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                        {(DQ (${ Id.VSub_Name __FLAGS_NULL))}
                                                        {<Id.Lit_RBracket ']'>}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <eval>
                                              more_env: []
                                              words: [
                                                {<eval>}
                                                {
                                                  (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                                    (${ Id.VSub_Name FLAGS_TRUE)
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          spids: [5314 5336]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.Simple
                                          blame_tok: <eval>
                                          more_env: []
                                          words: [
                                            {<eval>}
                                            {
                                              (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                                (${ Id.VSub_Name FLAGS_FALSE)
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  spids: [5294 5311]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_flags_strToEval_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_flags_strToEval_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike '_flags_strToEval_='>
                                          name: _flags_strToEval_
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'_flags_val_='> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'{__flags_'> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'}'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [{<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {(DQ (${ Id.VSub_Name _flags_val_))}
                                                    {<-eq>}
                                                    {(${ Id.VSub_Name FLAGS_FALSE)}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <eval>
                                          more_env: []
                                          words: [
                                            {<eval>}
                                            {
                                              (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                                (${ Id.VSub_Name FLAGS_TRUE)
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [5406 5425]
                                    )
                                  ]
                                  else_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.Simple
                                      blame_tok: <eval>
                                      more_env: []
                                      words: [
                                        {<eval>}
                                        {
                                          (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                            (${ Id.VSub_Name FLAGS_FALSE)
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_validFloat>
                                              more_env: []
                                              words: [
                                                {<_flags_validFloat>}
                                                {(DQ (${ Id.VSub_Name _flags_arg_))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <eval>
                                      more_env: []
                                      words: [
                                        {<eval>}
                                        {
                                          (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                            (${ Id.VSub_Name _flags_arg_) <'\''>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [5475 5486]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          name: flags_error
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid float value ('> (${ Id.VSub_Name _flags_arg_) 
                                            <')'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_return='>
                                          name: flags_return
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <_flags_validInt>
                                              more_env: []
                                              words: [
                                                {<_flags_validInt>}
                                                {(DQ (${ Id.VSub_Name _flags_arg_))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <eval>
                                      more_env: []
                                      words: [
                                        {<eval>}
                                        {
                                          (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                            (${ Id.VSub_Name _flags_arg_) <'\''>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [5539 5550]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          name: flags_error
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid integer value ('> 
                                            (${ Id.VSub_Name _flags_arg_) <')'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_return='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_return='>
                                          name: flags_return
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DollarBrace '${'>
                          pattern: (pat.Words words:[{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [
                                {<eval>}
                                {
                                  (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                    (${ Id.VSub_Name _flags_arg_) <'\''>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name _flags_usName_))}
                                        {<Id.Lit_Equals '='>}
                                        {(SQ <help>)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name FLAGS_help))}
                                                {<-eq>}
                                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <flags_help>
                                      more_env: []
                                      words: [{<flags_help>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'flags_error='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'flags_error='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'flags_error='>
                                              name: flags_error
                                            )
                                          op: assign_op.Equal
                                          rhs: {(SQ <'help requested'>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'flags_return='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'flags_return='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'flags_return='>
                                              name: flags_return
                                            )
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [5655 5674]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [5629 5648]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ (${ Id.VSub_Name _flags_type_))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FLAGS_ARGV='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FLAGS_ARGV='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_ARGV='> name:FLAGS_ARGV)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {($ Id.VSub_Pound '#')}
                            {<-gt>}
                            {<0>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FLAGS_ARGV='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FLAGS_ARGV='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS_ARGV='> name:FLAGS_ARGV)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name FLAGS_ARGV>
                                  var_name: FLAGS_ARGV
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonPlus _>
                                      arg_word: {(${ Id.VSub_Name FLAGS_ARGV) <' '>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                ) <'\''> ($ Id.VSub_Number 1) <'\''>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<_flags_arg_>}
                {<_flags_len_>}
                {<_flags_name_>}
                {<_flags_opt_>}
                {<_flags_pos_>}
                {<_flags_strToEval_>}
                {<_flags_type_>}
                {<_flags_usName_>}
                {<_flags_val_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_math>
      name: _flags_math
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-eq>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5846 5859]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_flags_useBuiltin>
                              more_env: []
                              words: [{<_flags_useBuiltin>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_flags_expr_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_flags_expr_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike '_flags_expr_='>
                              name: _flags_expr_
                            )
                          op: assign_op.Equal
                          rhs: {(SQ <'$(($@))'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {<echo>} {(${ Id.VSub_Name _flags_expr_)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <unset>
                      more_env: []
                      words: [{<unset>} {<_flags_expr_>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [5868 5873]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [{<eval>} {<expr>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'flags_return='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'flags_return='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_strlen>
      name: _flags_strlen
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_flags_str_='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_str_='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_flags_str_='> name:_flags_str_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Number 1>
                        var_name: 1
                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ (${ Id.VSub_Name _flags_str_))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_output='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_output='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_output='>
                              name: flags_output
                            )
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [5980 5995]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <_flags_useBuiltin>
                              more_env: []
                              words: [{<_flags_useBuiltin>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_output='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_output='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_output='>
                              name: flags_output
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name _flags_str_>
                                var_name: _flags_str_
                                prefix_op: <Id.VSub_Pound '#'>
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6002 6007]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'flags_output='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'flags_output='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_output='> name:flags_output)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <Id.Left_DollarBrace '${'>
                                more_env: []
                                words: [
                                  {(${ Id.VSub_Name FLAGS_EXPR_CMD)}
                                  {(DQ (${ Id.VSub_Name _flags_str_))}
                                  {<Id.Lit_Colon ':'>}
                                  {(SQ <'.*'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flags_return='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flags_return='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_str_>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ (${ Id.VSub_Name flags_output))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_flags_useBuiltin>
      name: _flags_useBuiltin
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name __FLAGS_USE_BUILTIN)}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <DEFINE_boolean>
      name: DEFINE_boolean
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <_flags_define>
                  more_env: []
                  words: [
                    {<_flags_define>}
                    {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <DEFINE_float>
      name: DEFINE_float
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <_flags_define>
                  more_env: []
                  words: [
                    {<_flags_define>}
                    {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <DEFINE_integer>
      name: DEFINE_integer
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <_flags_define>
                  more_env: []
                  words: [
                    {<_flags_define>}
                    {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <DEFINE_string>
      name: DEFINE_string
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <_flags_define>
                  more_env: []
                  words: [
                    {<_flags_define>}
                    {(${ Id.VSub_Name __FLAGS_TYPE_STRING)}
                    {(DQ ($ Id.VSub_At '@'))}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <FLAGS>
      name: FLAGS
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-z>}
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name __flags_help_type>
                          var_name: __flags_help_type
                          suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <DEFINE_boolean>
                  more_env: []
                  words: [{<DEFINE_boolean>} {(SQ <help>)} {<false>} {(SQ <'show this help'>)} {(SQ <h>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-gt>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))}
                                        {<-ne>}
                                        {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <_flags_getoptStandard>
                              more_env: []
                              words: [{<_flags_getoptStandard>} {(DQ ($ Id.VSub_At '@'))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [6320 6341]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <_flags_getoptEnhanced>
                          more_env: []
                          words: [{<_flags_getoptEnhanced>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6304 6317]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike '__flags_opts='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike '__flags_opts='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '__flags_opts='> name:__flags_opts)
                      op: assign_op.Equal
                      rhs: {(SQ <-->)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'flags_return='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'flags_return='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flags_return='> name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(${ Id.VSub_Name flags_return)}
                                {<-eq>}
                                {(${ Id.VSub_Name FLAGS_TRUE)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_parseGetopt>
                      more_env: []
                      words: [
                        {<_flags_parseGetopt>}
                        {($ Id.VSub_Pound '#')}
                        {(DQ (${ Id.VSub_Name __flags_opts))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_return='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_return='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_return='>
                              name: flags_return
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6391 6408]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name flags_return)}
                    {<-eq>}
                    {(${ Id.VSub_Name FLAGS_ERROR)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <_flags_fatal>
                  more_env: []
                  words: [{<_flags_fatal>} {(DQ (${ Id.VSub_Name flags_error))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_getoptInfo>
      name: flags_getoptInfo
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_flags_debug>
              more_env: []
              words: [
                {<_flags_debug>}
                {
                  (DQ <'uname -a: '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <uname>
                          more_env: []
                          words: [{<uname>} {<-a>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Backtick_Right '`'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_flags_debug>
              more_env: []
              words: [{<_flags_debug>} {(DQ <'PATH: '> (${ Id.VSub_Name PATH))}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name BASH_VERSION>
                                      var_name: BASH_VERSION
                                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_debug>
                      more_env: []
                      words: [{<_flags_debug>} {(SQ <'shell: bash'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <_flags_debug>
                      more_env: []
                      words: [{<_flags_debug>} {(DQ <'BASH_VERSION: '> (${ Id.VSub_Name BASH_VERSION))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [6534 6550]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name ZSH_VERSION>
                                      var_name: ZSH_VERSION
                                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <_flags_debug>
                      more_env: []
                      words: [{<_flags_debug>} {(SQ <'shell: zsh'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <_flags_debug>
                      more_env: []
                      words: [{<_flags_debug>} {(DQ <'ZSH_VERSION: '> (${ Id.VSub_Name ZSH_VERSION))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [6570 6586]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Left_DollarBrace '${'>
              more_env: []
              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
              left: <Id.Lit_VarLike '_flags_getoptReturn='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_flags_getoptReturn='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '_flags_getoptReturn='>
                      name: _flags_getoptReturn
                    )
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <_flags_debug>
              more_env: []
              words: [{<_flags_debug>} {(DQ <'getopt return: '> (${ Id.VSub_Name _flags_getoptReturn))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <_flags_debug>
              more_env: []
              words: [
                {<_flags_debug>}
                {
                  (DQ <'getopt --version: '> 
                    (CommandSub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (command.Simple
                          blame_tok: <Id.Left_DollarBrace '${'>
                          more_env: []
                          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
                        )
                      right: <Id.Backtick_Right '`'>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<_flags_getoptReturn>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_getoptIsEnh>
      name: flags_getoptIsEnh
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [
                {<test>}
                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))}
                {<-eq>}
                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_getoptIsStd>
      name: flags_getoptIsStd
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [
                {<test>}
                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))}
                {<-eq>}
                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_help>
      name: flags_help
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name FLAGS_HELP>
                                      var_name: FLAGS_HELP
                                      suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:(rhs_word__Empty))
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      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_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'USAGE: '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name FLAGS_PARENT>
                          var_name: FLAGS_PARENT
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VTest_ColonHyphen _>
                              arg_word: {($ Id.VSub_Number 0)}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        ) <' [flags] args'>
                      )
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {(DQ (${ Id.VSub_Name __flags_longNames))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(SQ <'flags:'>)}]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [flags_name_]
                      iterable: (for_iter.Words words:[{(${ Id.VSub_Name __flags_longNames)}])
                      semi_tok: <Id.Op_Semi _>
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_flagStr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_flagStr_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_flagStr_='>
                                      name: flags_flagStr_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_boolStr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_boolStr_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_boolStr_='>
                                      name: flags_boolStr_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_usName_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_usName_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_usName_='>
                                      name: flags_usName_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_underscoreName>
                                            more_env: []
                                            words: [
                                              {<_flags_underscoreName>}
                                              {(DQ (${ Id.VSub_Name flags_name_))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_default_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_default_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_default_='>
                                      name: flags_default_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_getFlagInfo>
                                            more_env: []
                                            words: [
                                              {<_flags_getFlagInfo>}
                                              {(DQ (${ Id.VSub_Name flags_usName_))}
                                              {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_help_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_help_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_help_='>
                                      name: flags_help_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_getFlagInfo>
                                            more_env: []
                                            words: [
                                              {<_flags_getFlagInfo>}
                                              {(DQ (${ Id.VSub_Name flags_usName_))}
                                              {(${ Id.VSub_Name __FLAGS_INFO_HELP)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_short_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_short_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_short_='>
                                      name: flags_short_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_getFlagInfo>
                                            more_env: []
                                            words: [
                                              {<_flags_getFlagInfo>}
                                              {(DQ (${ Id.VSub_Name flags_usName_))}
                                              {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_type_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_type_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_type_='>
                                      name: flags_type_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_getFlagInfo>
                                            more_env: []
                                            words: [
                                              {<_flags_getFlagInfo>}
                                              {(DQ (${ Id.VSub_Name flags_usName_))}
                                              {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ (${ Id.VSub_Name flags_short_))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ (${ Id.VSub_Name __FLAGS_NULL))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_flagStr_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_flagStr_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_flagStr_='>
                                          name: flags_flagStr_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ <-> (${ Id.VSub_Name flags_short_))}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS))}
                                                {<-eq>}
                                                {(DQ (${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ (${ Id.VSub_Name flags_short_))}
                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                            {(DQ (${ Id.VSub_Name __FLAGS_NULL))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'flags_flagStr_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'flags_flagStr_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'flags_flagStr_='>
                                                  name: flags_flagStr_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name flags_flagStr_) <','>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<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 ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'flags_boolStr_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'flags_boolStr_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'flags_boolStr_='>
                                                  name: flags_boolStr_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(SQ <'[no]'>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'flags_flagStr_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'flags_flagStr_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'flags_flagStr_='>
                                              name: flags_flagStr_
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name flags_flagStr_) <--> 
                                                (${ Id.VSub_Name flags_boolStr_) (${ Id.VSub_Name flags_name_) <':'>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [7037 7058]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(${ Id.VSub_Name flags_type_)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Left_DollarBrace '${'>
                                  pattern: 
                                    (pat.Words
                                      words: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <Id.Lit_LBracket '['>
                                                      more_env: []
                                                      words: [
                                                        {<Id.Lit_LBracket '['>}
                                                        {(DQ (${ Id.VSub_Name flags_default_))}
                                                        {<-eq>}
                                                        {(${ Id.VSub_Name FLAGS_TRUE)}
                                                        {<Id.Lit_RBracket ']'>}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                                      name: flags_defaultStr_
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(SQ <true>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [7175 7194]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                                  name: flags_defaultStr_
                                                )
                                              op: assign_op.Equal
                                              rhs: {(SQ <false>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Left_DollarBrace '${'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}
                                        {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                              name: flags_defaultStr_
                                            )
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name flags_default_)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Left_DollarBrace '${'>
                                  pattern: 
                                    (pat.Words
                                      words: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                              name: flags_defaultStr_
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <'\''> (${ Id.VSub_Name flags_default_) <'\''>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_defaultStr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_defaultStr_='>
                                      name: flags_defaultStr_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'(default: '> (${ Id.VSub_Name flags_defaultStr_) <')'>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_helpStr_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_helpStr_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_helpStr_='>
                                      name: flags_helpStr_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'  '> (${ Id.VSub_Name flags_flagStr_) <'  '> 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name flags_help_>
                                          var_name: flags_help_
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonPlus _>
                                              arg_word: {(${ Id.VSub_Name flags_help_) <' '>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        ) (${ Id.VSub_Name flags_defaultStr_)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <_flags_strlen>
                              more_env: []
                              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
                              left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                                      name: flags_helpStrLen_
                                    )
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name flags_output)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_columns_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_columns_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_columns_='>
                                      name: flags_columns_
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <_flags_columns>
                                            more_env: []
                                            words: [{<_flags_columns>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ (${ Id.VSub_Name flags_helpStrLen_))}
                                                {<-lt>}
                                                {(DQ (${ Id.VSub_Name flags_columns_))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      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_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  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
                                  left: <Id.Lit_VarLike 'flags_emptyStr_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_emptyStr_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_emptyStr_='>
                                          name: flags_emptyStr_
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {
                                                          (DQ <x> (${ Id.VSub_Name flags_flagStr_) <x>)
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                    (command.Simple
                                                      blame_tok: <awk>
                                                      more_env: []
                                                      words: [
                                                        {<awk>}
                                                        {(SQ <'{printf "%"length($0)-2"s", ""}'>)}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: [<Id.Op_Pipe _>]
                                                )
                                              right: <Id.Backtick_Right '`'>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'flags_helpStr_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_helpStr_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_helpStr_='>
                                          name: flags_helpStr_
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'  '> (${ Id.VSub_Name flags_emptyStr_) <'  '> 
                                            (${ Id.VSub_Name flags_defaultStr_)
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <_flags_strlen>
                                  more_env: []
                                  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
                                  left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'flags_helpStrLen_='>
                                          name: flags_helpStrLen_
                                        )
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name flags_output)}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<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 ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          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_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.Simple
                                      blame_tok: <echo>
                                      more_env: []
                                      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
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  spids: [6844 6859]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<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_>}
              ]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flags_reset>
      name: flags_reset
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [flags_name_]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name __flags_longNames)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_usName_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_usName_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_usName_='>
                              name: flags_usName_
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <_flags_underscoreName>
                                    more_env: []
                                    words: [
                                      {<_flags_underscoreName>}
                                      {(DQ (${ Id.VSub_Name flags_name_))}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'flags_strToEval_='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'flags_strToEval_='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'flags_strToEval_='>
                              name: flags_strToEval_
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'unset FLAGS_'> (${ Id.VSub_Name flags_usName_))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [flags_type_]
                      iterable: 
                        (for_iter.Words
                          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)}
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'flags_strToEval_='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'flags_strToEval_='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'flags_strToEval_='>
                                      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_)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {(DQ (${ Id.VSub_Name flags_strToEval_))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_boolNames='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_boolNames='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__flags_boolNames='>
                      name: __flags_boolNames
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_longNames='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_longNames='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__flags_longNames='>
                      name: __flags_longNames
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_shortNames='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_shortNames='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__flags_shortNames='>
                      name: __flags_shortNames
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '__flags_definedNames='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '__flags_definedNames='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike '__flags_definedNames='>
                      name: __flags_definedNames
                    )
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <flags_setLoggingLevel>
              more_env: []
              words: [{<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<flags_name_>} {<flags_type_>} {<flags_strToEval_>} {<flags_usName_>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <flags_setLoggingLevel>
      more_env: []
      words: [{<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)}]
      redirects: []
      do_fork: T
    )
  ]
)