(command.CommandList
  children: [
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-n>} 
          {
            (DQ 
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_VERSION>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
              )
            )
          } {<Id.Lit_RBracket ']'>}
        )
        (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_VERSION)
          op: assign_op.Equal
          rhs: {(SQ <1.2.1>)}
          spids: [270]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_TRUE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [279]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_FALSE)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [282]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_ERROR)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [285]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_DEBUG)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [292]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_INFO)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [295]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_WARN)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [298]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_ERROR)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [301]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_LEVEL_FATAL)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [304]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEVEL_DEFAULT)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name FLAGS_LEVEL_WARN)}
          spids: [307]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: {(SQ <'expr --'>)}
          spids: [316]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_UNAME_S)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<uname>} {<-s>}))}
          spids: [321]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name __FLAGS_UNAME_S))} 
                      {<Id.Lit_Equals '='>} {(SQ <BSD>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
                  op: assign_op.Equal
                  rhs: {(SQ <'gexpr --'>)}
                  spids: [352]
                )
              ]
            )
          ]
          spids: [330 349]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_flags_output_)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        words: [{(${ Id.VSub_Name __FLAGS_EXPR_CMD)}]
                        redirects: [
                          (redir
                            op: <Id.Redir_GreatAnd '2>&'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<1>}
                          )
                        ]
                        do_fork: T
                      )
                  )
                }
              spids: [360]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_output_))} {<Id.Lit_Equals '='>} {(SQ <-->)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__FLAGS_EXPR_CMD)
                      op: assign_op.Equal
                      rhs: {(SQ <expr>)}
                      spids: [409]
                    )
                  ]
                )
              ]
              spids: [373 402]
            )
          ]
        )
        (C {<unset>} {<_flags_output_>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_EXPR_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_EXPR_CMD>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {(${ Id.VSub_Name __FLAGS_EXPR_CMD)}
                  )
              )
            }
          spids: [428]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FLAGS_GETOPT_CMD)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name FLAGS_GETOPT_CMD>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<getopt>})
              )
            }
          spids: [437]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Name ZSH_VERSION>
                            suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                          )
                        )
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Pipeline
              children: [
                (C {<setopt>})
                (command.Simple
                  words: [{<grep>} {(DQ <'^shwordsplit'> <Id.Lit_Dollar '$'>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_fatal>} 
                      {(SQ <'zsh shwordsplit option is required for proper zsh operation'>)}
                    )
                  ]
                  spids: [481 496]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name FLAGS_PARENT>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_fatal>} 
                      {
                        (DQ <'zsh does not pass '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                          ) <'0 through properly. please declare\' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                          <'FLAGS_PARENT='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <0> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) <' before calling shFlags'>
                        )
                      }
                    )
                  ]
                  spids: [509 525]
                )
              ]
            )
          ]
          spids: [448 464]
        )
      ]
    )
    (command.Subshell
      child: 
        (command.Sentence
          child: 
            (C {<echo>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name FLAGS_TRUE>
                    suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<0>})
                  )
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                      {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [591]
                )
              ]
            )
          ]
          spids: [573 588]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:__FLAGS_USE_BUILTIN)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
              spids: [599]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST)
          op: assign_op.Equal
          rhs: {(SQ <' ARGC ARGV ERROR FALSE GETOPT_CMD HELP PARENT TRUE '>)}
          spids: [621]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_RESERVED_LIST)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST) <' VERSION '>)}
          spids: [626]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_STD)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [638]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_ENH)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [641]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS_BSD)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [644]
        )
      ]
    )
    (command.Simple
      words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
      do_fork: T
    )
    (command.Case
      to_match: {($ Id.VSub_QMark '$?')}
      arms: [
        (case_arm
          pat_list: [{<0>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)}
                  spids: [668]
                )
              ]
            )
          ]
          spids: [665 666 673 -1]
        )
        (case_arm
          pat_list: [{<1>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)}
                  spids: [682]
                )
              ]
            )
          ]
          spids: [679 680 687 -1]
        )
        (case_arm
          pat_list: [{<2>}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: (C {(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<--version>})
                                  )
                                )
                              } {<Id.Lit_Equals '='>} {(SQ <'-- '>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)}
                          spids: [729]
                        )
                      ]
                    )
                  ]
                  spids: [701 726]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__FLAGS_GETOPT_VERS)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)}
                      spids: [738]
                    )
                  ]
                )
              ]
            )
          ]
          spids: [693 694 747 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(C {<_flags_fatal>} {(SQ <'unable to determine getopt version'>)})]
          spids: [750 751 759 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_SHORT)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [767]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_OPTSTR_LONG)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [770]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_NULL)
          op: assign_op.Equal
          rhs: {(SQ <'~'>)}
          spids: [774]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_DEFAULT)
          op: assign_op.Equal
          rhs: {(SQ <default>)}
          spids: [783]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_HELP)
          op: assign_op.Equal
          rhs: {(SQ <help>)}
          spids: [788]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_SHORT)
          op: assign_op.Equal
          rhs: {(SQ <short>)}
          spids: [793]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_INFO_TYPE)
          op: assign_op.Equal
          rhs: {(SQ <type>)}
          spids: [798]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_SHORT)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [807]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_LEN_LONG)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [810]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_NONE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [817]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_BOOLEAN)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [820]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_FLOAT)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [823]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_INTEGER)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [826]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__FLAGS_TYPE_STRING)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [829]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_constants)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<set>})
                      (C {<awk>} {<-F> <Id.Lit_Equals '='>} 
                        {(SQ <'/^FLAGS_/ || /^__FLAGS_/ {print $1}'>)}
                      )
                    ]
                    negated: F
                  )
              )
            }
          spids: [836]
        )
      ]
    )
    (command.ForEach
      iter_name: __flags_const
      iter_words: [{(${ Id.VSub_Name __flags_constants)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(${ Id.VSub_Name __flags_const)}
              arms: [
                (case_arm
                  pat_list: [{<FLAGS_HELP>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                  spids: [880 881 885 -1]
                )
                (case_arm
                  pat_list: [{<FLAGS_PARENT>}]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                  spids: [888 889 893 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name ZSH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<readonly>} {(${ Id.VSub_Name __flags_const)})
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                  spids: [903 919]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name ZSH_VERSION)}
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_LBracket '['> <123> <Id.Lit_RBracket ']'> <.> <Id.Lit_Star '*'>}]
                  action: [(C {<readonly>} {(${ Id.VSub_Name __flags_const)})]
                  spids: [944 949 957 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<readonly>} {<-g>} {(${ Id.VSub_Name __flags_const)})]
                  spids: [960 961 971 -1]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<__flags_const>} {<__flags_constants>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_boolNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1001]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_longNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1009]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_shortNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1017]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_definedNames)
          op: assign_op.Equal
          rhs: {(SQ <' '>)}
          spids: [1025]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_columns)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [1034]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_level)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1041]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:__flags_opts)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [1047]
        )
      ]
    )
    (command.ShFunction
      name: _flags_debug
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:DEBUG '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_info
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_INFO)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:INFO '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_warn
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_WARN)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:WARN '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_error
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:ERROR '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_fatal
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __flags_level)} {<-le>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} {<Id.Lit_RBracket ']'>}
                )
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ <'flags:FATAL '> ($ Id.VSub_At '$@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Exit exit>
              arg_word: {(${ Id.VSub_Name FLAGS_ERROR)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_loggingLevel
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<echo>} {(${ Id.VSub_Name __flags_level)})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_setLoggingLevel
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<1>} {<Id.Lit_RBracket ']'>})
                (C {<_flags_fatal>} {(DQ <'flags_setLevel(): logging level missing'>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_level_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1329]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_level_)} {<-ge>} 
                  {(${ Id.VSub_Name FLAGS_LEVEL_DEBUG)} {<-a>} {(${ Id.VSub_Name _flags_level_)} {<-le>} {(${ Id.VSub_Name FLAGS_LEVEL_FATAL)} 
                  {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_fatal>} 
                  {
                    (DQ <'Invalid logging level \''> (${ Id.VSub_Name _flags_level_) <'\' specified.'>)
                  }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_level)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1376]
                )
              ]
            )
            (C {<unset>} {<_flags_level_>})
          ]
        )
    )
    (command.ShFunction
      name: _flags_define
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<4>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(SQ <'DEFINE error: too few arguments'>)}
                          spids: [1464]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1470]
                        )
                      ]
                    )
                    (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {(${ Id.VSub_Name flags_return)}
                    )
                  ]
                  spids: [1448 1461]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_type_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [1496]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_name_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [1500]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$3')}
                  spids: [1504]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_help_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$4')}
                  spids: [1508]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_short_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 5>
                        suffix_op: 
                          (suffix_op.Unary
                            tok: <Id.VTest_ColonHyphen ':-'>
                            arg_word: {(${ Id.VSub_Name __FLAGS_NULL)}
                          )
                      )
                    }
                  spids: [1512]
                )
              ]
            )
            (C {<_flags_debug>} 
              {
                (DQ <'type:'> (${ Id.VSub_Name _flags_type_) <' name:'> (${ Id.VSub_Name _flags_name_))
              } 
              {
                (DQ <'default:\''> (${ Id.VSub_Name _flags_default_) <'\' help:\''> 
                  (${ Id.VSub_Name _flags_help_) <'\''>
                )
              } {(DQ <'short:'> (${ Id.VSub_Name _flags_short_))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [1561]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_usName_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)})
                      )
                    }
                  spids: [1567]
                )
              ]
            )
            (C {<_flags_itemInList>} {(${ Id.VSub_Name _flags_usName_)} 
              {(DQ (${ Id.VSub_Name __FLAGS_RESERVED_LIST))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(DQ <'flag name ('> (${ Id.VSub_Name _flags_name_) <') is reserved'>)}
                          spids: [1615]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_return_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1625]
                        )
                      ]
                    )
                  ]
                  spids: [1597 1612]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-ne>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<-a>} 
                          {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'short flag required for ('> (${ Id.VSub_Name _flags_name_) 
                                <') on this platform'>
                              )
                            }
                          spids: [1691]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_return_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [1701]
                        )
                      ]
                    )
                  ]
                  spids: [1639 1688]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_itemInList>} {(${ Id.VSub_Name _flags_usName_)} 
                                      {(${ Id.VSub_Name __flags_definedNames)}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'definition for ([no]'> (${ Id.VSub_Name _flags_name_) 
                                        <') already exists'>
                                      )
                                    }
                                  spids: [1751]
                                )
                              ]
                            )
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                  spids: [1770]
                                )
                              ]
                            )
                          ]
                          spids: [1735 1748]
                        )
                      ]
                    )
                  ]
                  spids: [1715 1732]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<-a>} {(DQ (${ Id.VSub_Name _flags_short_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} 
                          {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_itemInList>} {(DQ (${ Id.VSub_Name _flags_short_))} 
                                      {(${ Id.VSub_Name __flags_shortNames)}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'flag short name ('> (${ Id.VSub_Name _flags_short_) 
                                        <') already defined'>
                                      )
                                    }
                                  spids: [1844]
                                )
                              ]
                            )
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name flags_error))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                  spids: [1863]
                                )
                              ]
                            )
                          ]
                          spids: [1826 1841]
                        )
                      ]
                    )
                  ]
                  spids: [1787 1823]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_type_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validBool>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Case
                                      to_match: {(${ Id.VSub_Name _flags_default_)}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<true>} {<t>} {<0>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                                  spids: [1953]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1946 1951 1958 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<false>} {<f>} {<1>}]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_default_)
                                                  op: assign_op.Equal
                                                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                                  spids: [1968]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [1961 1966 1973 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1923 1934]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [1982]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [1992]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1917 1920 2001 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validFloat>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [2011 2022]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [2031]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [2041]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2005 2008 2050 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validInt>} 
                                              {(DQ (${ Id.VSub_Name _flags_default_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [(C {<Id.Lit_Colon ':'>})]
                                  spids: [2060 2071]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid default flag value \''> 
                                            (${ Id.VSub_Name _flags_default_) <'\''>
                                          )
                                        }
                                      spids: [2080]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_return_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [2090]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2054 2057 2099 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                          spids: [2103 2106 2108 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized flag type \''> (${ Id.VSub_Name _flags_type_) 
                                        <'\''>
                                      )
                                    }
                                  spids: [2119]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_return_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [2129]
                                )
                              ]
                            )
                          ]
                          spids: [2115 2116 2135 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1888 1905]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_return_)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<eval>} 
                      {
                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                          (${ Id.VSub_Name _flags_default_) <'\''>
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_TYPE) <'='> (${ Id.VSub_Name _flags_type_)
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_default_) 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          )
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_HELP) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name _flags_help_) 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          )
                        )
                      }
                    )
                    (C {<eval>} 
                      {
                        (DQ <__flags_> (${ Id.VSub_Name _flags_usName_) <_> 
                          (${ Id.VSub_Name __FLAGS_INFO_SHORT) <'=\''> (${ Id.VSub_Name _flags_short_) <'\''>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_shortNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_shortNames) (${ Id.VSub_Name _flags_short_) 
                                <' '>
                              )
                            }
                          spids: [2267]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_longNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_longNames) (${ Id.VSub_Name _flags_name_) 
                                <' '>
                              )
                            }
                          spids: [2279]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} 
                          {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:__flags_boolNames)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_boolNames) <no> 
                                    (${ Id.VSub_Name _flags_name_) <' '>
                                  )
                                }
                              spids: [2309]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name __flags_definedNames) 
                                (${ Id.VSub_Name _flags_usName_) <' '>
                              )
                            }
                          spids: [2327]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} 
                          {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name __flags_definedNames) <no> 
                                    (${ Id.VSub_Name _flags_usName_) <' '>
                                  )
                                }
                              spids: [2357]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2145 2162]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name _flags_return_)}
                  spids: [2374]
                )
              ]
            )
            (C {<unset>} {<_flags_default_>} {<_flags_help_>} {<_flags_name_>} {<_flags_return_>} 
              {<_flags_short_>} {<_flags_type_>} {<_flags_usName_>}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_underscoreName
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [(C {<echo>} {($ Id.VSub_Number '$1')}) (C {<tr>} {(SQ <->)} {(SQ <_>)})]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_genOptStr
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_optStrType_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2516]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_opts_)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [2521]
                )
              ]
            )
            (command.ForEach
              iter_name: _flags_name_
              iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)})
                              )
                            }
                          spids: [2541]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_type_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<_flags_getFlagInfo>} {(${ Id.VSub_Name _flags_usName_)} 
                                    {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                  )
                              )
                            }
                          spids: [2553]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} 
                          {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<_flags_fatal>} {(SQ <'call to _flags_type_ failed'>)})
                      ]
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_optStrType_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_shortName_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} {(${ Id.VSub_Name _flags_usName_)} 
                                            {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                                          )
                                      )
                                    }
                                  spids: [2605]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ (${ Id.VSub_Name _flags_shortName_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name _flags_opts_) 
                                                (${ Id.VSub_Name _flags_shortName_)
                                              )
                                            }
                                          spids: [2651]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} 
                                          {<-ne>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                              spids: [2684]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2626 2648]
                                )
                              ]
                            )
                          ]
                          spids: [2599 2602 2696 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: <Id.VSub_Name _flags_opts_>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonPlus ':+'>
                                              arg_word: {(${ Id.VSub_Name _flags_opts_) <','>}
                                            )
                                        ) (${ Id.VSub_Name _flags_name_)
                                      )
                                    }
                                  spids: [2706]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-ne>} 
                                  {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opts_)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name _flags_opts_) <':'>)}
                                      spids: [2744]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [2700 2703 2753 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {(DQ (${ Id.VSub_Name _flags_opts_))})
            (C {<unset>} {<_flags_name_>} {<_flags_opts_>} {<_flags_optStrType_>} {<_flags_shortName_>} 
              {<_flags_type_>} {<_flags_usName_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getFlagInfo
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_gFI_usName_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2840]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_gFI_info_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [2844]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_infoVar_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                        (${ Id.VSub_Name _flags_gFI_info_)
                      )
                    }
                  spids: [2849]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'_flags_infoValue_='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_infoVar_) 
                        <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                      )
                    }
                  spids: [2862]
                )
              ]
            )
            (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name _flags_infoValue_>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Plus '+'> arg_word:{<x>})
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [2905]
                        )
                      ]
                    )
                  ]
                  spids: [2885 2902]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_flags_typeVar_)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <__flags_> (${ Id.VSub_Name _flags_gFI_usName_) <_> 
                            (${ Id.VSub_Name __FLAGS_INFO_TYPE)
                          )
                        }
                      spids: [2946]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'_flags_typeValue_='> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\"'>
                            ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{'> (${ Id.VSub_Name _flags_typeVar_) 
                            <':-}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                          )
                        }
                      spids: [2959]
                    )
                  ]
                )
                (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_typeValue_))} 
                                  {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_TYPE_STRING))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:flags_return)
                              op: assign_op.Equal
                              rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                              spids: [3006]
                            )
                          ]
                        )
                      ]
                      spids: [2982 3003]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [3015]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'missing flag info variable ('> (${ Id.VSub_Name _flags_infoVar_) 
                                <')'>
                              )
                            }
                          spids: [3021]
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (C {<echo>} {(DQ (${ Id.VSub_Name _flags_infoValue_))})
            (C {<unset>} {<_flags_gFI_usName_>} {<_flags_gfI_info_>} {<_flags_infoValue_>} 
              {<_flags_infoVar_>} {<_flags_strToEval_>} {<_flags_typeValue_>} {<_flags_typeVar_>}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_error>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_itemInList
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_str_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3137]
                )
              ]
            )
            (C {<shift>})
            (command.Case
              to_match: 
                {
                  (DQ <' '> 
                    (braced_var_sub
                      token: <Id.VSub_Star '*'>
                      suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                    ) <' '>
                  )
                }
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) 
                      (${ Id.VSub_Name _flags_str_) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\ '>) <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3168]
                        )
                      ]
                    )
                  ]
                  spids: [3159 3166 3173 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3179]
                        )
                      ]
                    )
                  ]
                  spids: [3176 3177 3184 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_str_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_columns
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name __flags_columns))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [{<eval>} {<stty>} {<size>}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<set>} {<-->} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<stty>} {<size>})
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:__flags_columns)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$2')}
                                  spids: [3281]
                                )
                              ]
                            )
                          ]
                          spids: [3246 3261]
                        )
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      words: [{<eval>} {<tput>} {<cols>}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<set>} {<-->} 
                              {
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<tput>} {<cols>})
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:__flags_columns)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number '$1')}
                                  spids: [3316]
                                )
                              ]
                            )
                          ]
                          spids: [3285 3300]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:__flags_columns)
                              op: assign_op.Equal
                              rhs: {<80>}
                              spids: [3323]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [3224 3239]
                )
              ]
            )
            (C {<echo>} {(${ Id.VSub_Name __flags_columns)})
          ]
        )
    )
    (command.ShFunction
      name: _flags_validBool
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_bool_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3370]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [3375]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name _flags_bool_))}
              arms: [
                (case_arm pat_list:[{<true>} {<t>} {<0>}] spids:[3392 3397 3399 -1])
                (case_arm pat_list:[{<false>} {<f>} {<1>}] spids:[3402 3407 3409 -1])
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3415]
                        )
                      ]
                    )
                  ]
                  spids: [3412 3413 3420 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_bool_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_validFloat
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                  spids: [3466]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_float_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3491]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_validInt>} {(${ Id.VSub_Name _flags_float_)})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3508]
                        )
                      ]
                    )
                  ]
                  spids: [3496 3505]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_float_whole_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_float_>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Percent '%'>
                                    arg_word: {<.> <Id.Lit_Other '*'>}
                                  )
                              )
                            }
                          spids: [3522]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_float_fraction_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_float_>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_Pound '#'>
                                    arg_word: {<Id.Lit_Other '*'> <.>}
                                  )
                              )
                            }
                          spids: [3531]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<_flags_validInt>} 
                                      {
                                        (braced_var_sub
                                          token: <Id.VSub_Name _flags_float_whole_>
                                          suffix_op: 
                                            (suffix_op.Unary
                                              tok: <Id.VTest_ColonHyphen ':-'>
                                              arg_word: {<0>}
                                            )
                                        )
                                      } {<-a>} {<_flags_validInt>} {(${ Id.VSub_Name _flags_float_fraction_)}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                                  spids: [3564]
                                )
                              ]
                            )
                          ]
                          spids: [3540 3561]
                        )
                      ]
                    )
                    (C {<unset>} {<_flags_float_whole_>} {<_flags_float_fraction_>})
                  ]
                  spids: [3514 3519]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                      spids: [3583]
                    )
                  ]
                )
                (command.Case
                  to_match: {(${ Id.VSub_Name _flags_float_)}
                  arms: [
                    (case_arm
                      pat_list: [{<-> <Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_test_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\(-[0-9]*\\.[0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [3606]
                            )
                          ]
                        )
                      ]
                      spids: [3598 3600 3638 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_test_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_Colon ':'>} {(SQ <'\\([0-9]*\\.[0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [3648]
                            )
                          ]
                        )
                      ]
                      spids: [3641 3642 3680 -1]
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_test_))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name _flags_float_))} {<Id.Lit_RBracket ']'>}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3707]
                        )
                      ]
                    )
                  ]
                )
                (C {<unset>} {<_flags_test_>})
              ]
            )
            (C {<unset>} {<_flags_float_>} {<_flags_float_whole_>} {<_flags_float_fraction_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_validInt
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                  spids: [3765]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name flags_return)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_int_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3790]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name _flags_int_)}
              arms: [
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'> <.> <Id.Lit_Star '*'>}]
                  spids: [3804 3808 3810 -1]
                )
                (case_arm
                  pat_list: [{<-> <Id.Lit_Star '*'>}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: (C {<_flags_useBuiltin>})
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_int_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name _flags_int_>
                                        suffix_op: 
                                          (suffix_op.Unary
                                            tok: <Id.VOp1_Pound '#'>
                                            arg_word: {<->}
                                          )
                                      )
                                    }
                                  spids: [3832]
                                )
                              ]
                            )
                          ]
                          spids: [3824 3829]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_int_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                        {(DQ (${ Id.VSub_Name _flags_int_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\([0-9][0-9]*\\)'>)}
                                      )
                                  )
                                }
                              spids: [3843]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [3816 3818 3872 -1]
                )
              ]
            )
            (command.Case
              to_match: {(${ Id.VSub_Name _flags_int_)}
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> <Id.Lit_LBracket '['> <Id.KW_Bang '!'> <0-9> 
                      <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [3896]
                        )
                      ]
                    )
                  ]
                  spids: [3888 3894 3901 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                          spids: [3907]
                        )
                      ]
                    )
                  ]
                  spids: [3904 3905 3912 -1]
                )
              ]
            )
            (C {<unset>} {<_flags_int_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getoptStandard
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [3967]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_shortOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)})
                      )
                    }
                  spids: [3973]
                )
              ]
            )
            (command.ForEach
              iter_name: _flags_opt_
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_match_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<echo>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)})
                                      (C {<sed>} {(SQ <'s/ //g'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [4008]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_match_))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x> (${ Id.VSub_Name _flags_opt_) <x>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(SQ <'the available getopt does not support spaces in options'>)}
                                  spids: [4058]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [4064]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4031 4055]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:__flags_opts)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<getopt>}
                                      {(${ Id.VSub_Name _flags_shortOpts_)}
                                      {($ Id.VSub_At '$@')}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<1>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          spids: [4100]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_rtrn_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [4117]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} 
                                      {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                                  spids: [4150]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [4156]
                                )
                              ]
                            )
                          ]
                          spids: [4121 4138]
                        )
                      ]
                    )
                  ]
                  spids: [4080 4097]
                )
              ]
            )
            (C {<unset>} {<_flags_match_>} {<_flags_opt_>} {<_flags_rtrn_>} {<_flags_shortOpts_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_getoptEnhanced
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [4223]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_shortOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_SHORT)})
                      )
                    }
                  spids: [4229]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_boolOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ (${ Id.VSub_Name __flags_boolNames))})
                              (C {<sed>} {(SQ <'s/^ *//;s/ *$//;s/ /,/g'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [4241]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_longOpts_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<_flags_genOptStr>} {(${ Id.VSub_Name __FLAGS_OPTSTR_LONG)})
                      )
                    }
                  spids: [4267]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_opts)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            words: [
                              {(${ Id.VSub_Name FLAGS_GETOPT_CMD)}
                              {<-o>}
                              {(${ Id.VSub_Name _flags_shortOpts_)}
                              {<-l>}
                              {
                                (DQ (${ Id.VSub_Name _flags_longOpts_) <','> 
                                  (${ Id.VSub_Name _flags_boolOpts_)
                                )
                              }
                              {<-->}
                              {(DQ ($ Id.VSub_At '$@'))}
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<1>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [4280]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_rtrn_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [4332]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_rtrn_)} {<-ne>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_warn>} {(DQ (${ Id.VSub_Name __flags_opts))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_error)
                          op: assign_op.Equal
                          rhs: {(SQ <'unable to parse provided options with getopt.'>)}
                          spids: [4365]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                          spids: [4371]
                        )
                      ]
                    )
                  ]
                  spids: [4336 4353]
                )
              ]
            )
            (C {<unset>} {<_flags_boolOpts_>} {<_flags_longOpts_>} {<_flags_rtrn_>} {<_flags_shortOpts_>})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_parseGetopt
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_argc_)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [4441]
                )
              ]
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                  spids: [4449]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-ne>} 
                              {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<set>} {<-->} {($ Id.VSub_At '$@')})]
                  spids: [4456 4473]
                )
              ]
              else_action: [(C {<eval>} {<set>} {<-->} {(DQ ($ Id.VSub_At '$@'))})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FLAGS_ARGC)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (C {<_flags_math>} 
                            {(DQ ($ Id.VSub_Pound '$#') <' - 1 - '> (${ Id.VSub_Name _flags_argc_))}
                          )
                      )
                    }
                  spids: [4525]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [4554]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_arg_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Number 2>
                                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{})
                              )
                            }
                          spids: [4558]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_type_)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name __FLAGS_TYPE_NONE)}
                          spids: [4565]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                          op: assign_op.Equal
                          rhs: {(SQ )}
                          spids: [4571]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name _flags_opt_))}
                      arms: [
                        (case_arm
                          pat_list: [{<-->}]
                          action: [
                            (command.Sentence
                              child: (C {<shift>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4592 4593 4600 -1]
                        )
                        (case_arm
                          pat_list: [{<--> <Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<_flags_useBuiltin>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _flags_opt_>
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    tok: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <-->}
                                                  )
                                              )
                                            }
                                          spids: [4623]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4615 4620]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'--\\(.*\\)'>)}
                                              )
                                          )
                                        }
                                      spids: [4635]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_len_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_LONG)}
                                  spids: [4664]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_itemInList>} 
                                              {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_longNames)}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name _flags_opt_)}
                                          spids: [4688]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4670 4685]
                                )
                              ]
                              else_action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<_flags_itemInList>} 
                                                  {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_boolNames)}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Sentence
                                                      child: (C {<_flags_useBuiltin>})
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:_flags_name_)
                                                      op: assign_op.Equal
                                                      rhs: 
                                                        {
                                                          (braced_var_sub
                                                            token: <Id.VSub_Name _flags_opt_>
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                tok: <Id.VOp1_Pound '#'>
                                                                arg_word: {<Id.Lit_Other '*'> <no>}
                                                              )
                                                          )
                                                        }
                                                      spids: [4727]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [4719 4724]
                                            )
                                          ]
                                          else_action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:_flags_name_)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_Backtick '`'>
                                                        child: 
                                                          (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                            {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'no\\(.*\\)'>)}
                                                          )
                                                      )
                                                    }
                                                  spids: [4739]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_type_)
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}
                                              spids: [4768]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:_flags_arg_)
                                              op: assign_op.Equal
                                              rhs: {(${ Id.VSub_Name __FLAGS_NULL)}
                                              spids: [4774]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4701 4716]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [4607 4609 4786 -1]
                        )
                        (case_arm
                          pat_list: [{<-> <Id.Lit_Star '*'>}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: (C {<_flags_useBuiltin>})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name _flags_opt_>
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    tok: <Id.VOp1_Pound '#'>
                                                    arg_word: {<Id.Lit_Other '*'> <->}
                                                  )
                                              )
                                            }
                                          spids: [4806]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4798 4803]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_opt_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} 
                                                {(DQ (${ Id.VSub_Name _flags_opt_))} {<Id.Lit_Colon ':'>} {(SQ <'-\\(.*\\)'>)}
                                              )
                                          )
                                        }
                                      spids: [4818]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:_flags_len_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name __FLAGS_LEN_SHORT)}
                                  spids: [4847]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_itemInList>} 
                                              {(DQ (${ Id.VSub_Name _flags_opt_))} {(${ Id.VSub_Name __flags_shortNames)}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_pos_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name __flags_shortNames))}
                                                      )
                                                      (C {<awk>} 
                                                        {
                                                          (SQ 
                                                            <
'BEGIN{RS=" ";rn=0}$0==e{rn=NR}END{print rn}'
                                                            >
                                                          )
                                                        } {<Id.Lit_VarLike 'e='> (${ Id.VSub_Name _flags_opt_)}
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [4879]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:_flags_name_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name __flags_longNames))}
                                                      )
                                                      (C {<awk>} 
                                                        {(SQ <'BEGIN{RS=" "}rn==NR{print $0}'>)} {<Id.Lit_VarLike 'rn='> (DQ (${ Id.VSub_Name _flags_pos_))}
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [4915]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4853 4868]
                                )
                              ]
                            )
                          ]
                          spids: [4790 4792 4951 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ (${ Id.VSub_Name _flags_name_))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_error)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'unrecognized option ('> (${ Id.VSub_Name _flags_opt_) <')'>)
                                    }
                                  spids: [4980]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_return)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                  spids: [4990]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Break break>
                            )
                          ]
                          spids: [4962 4977]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name _flags_name_)})
                              )
                            }
                          spids: [5007]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} {<-eq>} 
                          {(${ Id.VSub_Name __FLAGS_TYPE_NONE)} {<Id.Lit_RBracket ']'>}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:_flags_type_)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<_flags_getFlagInfo>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                        {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                      )
                                  )
                                }
                              spids: [5037]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(${ Id.VSub_Name _flags_type_)}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_len_)} 
                                              {<-eq>} {(${ Id.VSub_Name __FLAGS_LEN_LONG)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(DQ (${ Id.VSub_Name _flags_arg_))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (C {<eval>} 
                                              {
                                                (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                                  (${ Id.VSub_Name FLAGS_TRUE)
                                                )
                                              }
                                            )
                                          ]
                                          spids: [5095 5117]
                                        )
                                      ]
                                      else_action: [
                                        (C {<eval>} 
                                          {
                                            (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                              (${ Id.VSub_Name FLAGS_FALSE)
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5075 5092]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:_flags_strToEval_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'_flags_val_='> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                            ) <'{__flags_'> (${ Id.VSub_Name _flags_usName_) <_> (${ Id.VSub_Name __FLAGS_INFO_DEFAULT) <'}'>
                                          )
                                        }
                                      spids: [5157]
                                    )
                                  ]
                                )
                                (C {<eval>} {(DQ (${ Id.VSub_Name _flags_strToEval_))})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(${ Id.VSub_Name _flags_val_)} {<-eq>} {(${ Id.VSub_Name FLAGS_FALSE)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<eval>} 
                                          {
                                            (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                              (${ Id.VSub_Name FLAGS_TRUE)
                                            )
                                          }
                                        )
                                      ]
                                      spids: [5183 5200]
                                    )
                                  ]
                                  else_action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'='> 
                                          (${ Id.VSub_Name FLAGS_FALSE)
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [5069 5072 5240 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validFloat>} 
                                              {(DQ (${ Id.VSub_Name _flags_arg_))}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                          (${ Id.VSub_Name _flags_arg_) <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [5250 5261]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid float value ('> (${ Id.VSub_Name _flags_arg_) 
                                            <')'>
                                          )
                                        }
                                      spids: [5282]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_return)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [5292]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [5244 5247 5304 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<_flags_validInt>} {(DQ (${ Id.VSub_Name _flags_arg_))})
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<eval>} 
                                      {
                                        (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                          (${ Id.VSub_Name _flags_arg_) <'\''>
                                        )
                                      }
                                    )
                                  ]
                                  spids: [5314 5325]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_error)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'invalid integer value ('> 
                                            (${ Id.VSub_Name _flags_arg_) <')'>
                                          )
                                        }
                                      spids: [5346]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_return)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name FLAGS_ERROR)}
                                      spids: [5356]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                            )
                          ]
                          spids: [5308 5311 5368 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                          action: [
                            (C {<eval>} 
                              {
                                (DQ <FLAGS_> (${ Id.VSub_Name _flags_usName_) <'=\''> 
                                  (${ Id.VSub_Name _flags_arg_) <'\''>
                                )
                              }
                            )
                          ]
                          spids: [5372 5375 5393 -1]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name _flags_usName_))} 
                                      {<Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name FLAGS_help)} 
                                              {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<flags_help>})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_error)
                                          op: assign_op.Equal
                                          rhs: {(SQ <'help requested'>)}
                                          spids: [5449]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_return)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                                          spids: [5455]
                                        )
                                      ]
                                    )
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [5426 5443]
                                )
                              ]
                            )
                          ]
                          spids: [5404 5423]
                        )
                      ]
                    )
                    (C {<shift>})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name _flags_type_)} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<Id.Lit_RBracket ']'>}
                        )
                        (C {<shift>})
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FLAGS_ARGV)
                  op: assign_op.Equal
                  rhs: {(SQ )}
                  spids: [5506]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FLAGS_ARGV)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name FLAGS_ARGV>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_ColonPlus ':+'>
                                      arg_word: {(${ Id.VSub_Name FLAGS_ARGV) <' '>}
                                    )
                                ) <'\''> ($ Id.VSub_Number '$1') <'\''>
                              )
                            }
                          spids: [5527]
                        )
                      ]
                    )
                    (C {<shift>})
                  ]
                )
            )
            (C {<unset>} {<_flags_arg_>} {<_flags_len_>} {<_flags_name_>} {<_flags_opt_>} {<_flags_pos_>} 
              {<_flags_strToEval_>} {<_flags_type_>} {<_flags_usName_>} {<_flags_val_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_math
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name FLAGS_FALSE)}
                          spids: [5629]
                        )
                      ]
                    )
                  ]
                  spids: [5613 5626]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_flags_expr_)
                          op: assign_op.Equal
                          rhs: {(SQ <'$(($@))'>)}
                          spids: [5651]
                        )
                      ]
                    )
                    (C {<eval>} {<echo>} {(${ Id.VSub_Name _flags_expr_)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [5666]
                        )
                      ]
                    )
                    (C {<unset>} {<_flags_expr_>})
                  ]
                  spids: [5635 5640]
                )
              ]
              else_action: [
                (C {<eval>} {<expr>} {($ Id.VSub_At '$@')})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [5685]
                    )
                  ]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_strlen
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_str_)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: <Id.VSub_Number 1>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{})
                      )
                    }
                  spids: [5733]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name _flags_str_))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_output)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [5759]
                        )
                      ]
                    )
                  ]
                  spids: [5741 5756]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: (C {<_flags_useBuiltin>})
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_output)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _flags_str_>
                                prefix_op: (Id.VSub_Pound)
                              )
                            }
                          spids: [5771]
                        )
                      ]
                    )
                  ]
                  spids: [5763 5768]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_output)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (C {(${ Id.VSub_Name FLAGS_EXPR_CMD)} {(DQ (${ Id.VSub_Name _flags_str_))} 
                                {<Id.Lit_Colon ':'>} {(SQ <'.*'>)}
                              )
                          )
                        }
                      spids: [5781]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flags_return)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [5806]
                )
              ]
            )
            (C {<unset>} {<_flags_str_>})
            (C {<echo>} {(${ Id.VSub_Name flags_output)})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: _flags_useBuiltin
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name __FLAGS_USE_BUILTIN)}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_boolean
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_float
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_integer
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: DEFINE_string
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (C {<_flags_define>} {(${ Id.VSub_Name __FLAGS_TYPE_STRING)} {(DQ ($ Id.VSub_At '$@'))})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
    )
    (command.ShFunction
      name: FLAGS
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} 
                  {
                    (DQ 
                      (braced_var_sub
                        token: <Id.VSub_Name __flags_help_type>
                        suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                      )
                    )
                  } {<Id.Lit_RBracket ']'>}
                )
                (C {<DEFINE_boolean>} {(SQ <help>)} {<false>} {(SQ <'show this help'>)} {(SQ <h>)})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} 
                                      {<-ne>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [(C {<_flags_getoptStandard>} {(DQ ($ Id.VSub_At '$@'))})]
                          spids: [6079 6096]
                        )
                      ]
                      else_action: [(C {<_flags_getoptEnhanced>} {(DQ ($ Id.VSub_At '$@'))})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [6119]
                        )
                      ]
                    )
                  ]
                  spids: [6063 6076]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:__flags_opts)
                      op: assign_op.Equal
                      rhs: {(SQ <-->)}
                      spids: [6130]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:flags_return)
                      op: assign_op.Equal
                      rhs: {(${ Id.VSub_Name FLAGS_TRUE)}
                      spids: [6136]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                              {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_parseGetopt>} {($ Id.VSub_Pound '$#')} 
                      {(DQ (${ Id.VSub_Name __flags_opts))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_return)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [6177]
                        )
                      ]
                    )
                  ]
                  spids: [6146 6163]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_return)} {<-eq>} 
                  {(${ Id.VSub_Name FLAGS_ERROR)} {<Id.Lit_RBracket ']'>}
                )
                (C {<_flags_fatal>} {(DQ (${ Id.VSub_Name flags_error))})
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name flags_return)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptInfo
      body: 
        (BraceGroup
          children: [
            (C {<_flags_debug>} 
              {
                (DQ <'uname -a: '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<uname>} {<-a>})
                  )
                )
              }
            )
            (C {<_flags_debug>} {(DQ <'PATH: '> (${ Id.VSub_Name PATH))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name BASH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_debug>} {(SQ <'shell: bash'>)})
                    (C {<_flags_debug>} {(DQ <'BASH_VERSION: '> (${ Id.VSub_Name BASH_VERSION))})
                  ]
                  spids: [6289 6305]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name ZSH_VERSION>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<_flags_debug>} {(SQ <'shell: zsh'>)})
                    (C {<_flags_debug>} {(DQ <'ZSH_VERSION: '> (${ Id.VSub_Name ZSH_VERSION))})
                  ]
                  spids: [6325 6341]
                )
              ]
            )
            (command.Simple
              words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_flags_getoptReturn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [6377]
                )
              ]
            )
            (C {<_flags_debug>} {(DQ <'getopt return: '> (${ Id.VSub_Name _flags_getoptReturn))})
            (C {<_flags_debug>} 
              {
                (DQ <'getopt --version: '> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: 
                      (command.Simple
                        words: [{(${ Id.VSub_Name FLAGS_GETOPT_CMD)} {<--version>}]
                        redirects: [
                          (redir
                            op: <Id.Redir_GreatAnd '2>&'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<1>}
                          )
                        ]
                        do_fork: T
                      )
                  )
                )
              }
            )
            (C {<unset>} {<_flags_getoptReturn>})
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptIsEnh
      body: 
        (BraceGroup
          children: [
            (C {<test>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} 
              {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_getoptIsStd
      body: 
        (BraceGroup
          children: [
            (C {<test>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} 
              {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_help
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name FLAGS_HELP>
                                    suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:(word.Empty))
                                  )
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(DQ (${ Id.VSub_Name FLAGS_HELP))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [6538 6554]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<echo>}
                    {
                      (DQ <'USAGE: '> 
                        (braced_var_sub
                          token: <Id.VSub_Name FLAGS_PARENT>
                          suffix_op: 
                            (suffix_op.Unary
                              tok: <Id.VTest_ColonHyphen ':-'>
                              arg_word: {($ Id.VSub_Number '$0')}
                            )
                        ) <' [flags] args'>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name __flags_longNames))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<echo>} {(SQ <'flags:'>)}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ForEach
                      iter_name: flags_name_
                      iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                  spids: [6633]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_boolStr_)
                                  op: assign_op.Equal
                                  rhs: {(SQ )}
                                  spids: [6638]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_usName_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_underscoreName>} {(${ Id.VSub_Name flags_name_)})
                                      )
                                    }
                                  spids: [6643]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_default_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)}
                                          )
                                      )
                                    }
                                  spids: [6656]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_help_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_HELP)}
                                          )
                                      )
                                    }
                                  spids: [6679]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_short_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                                          )
                                      )
                                    }
                                  spids: [6702]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_type_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<_flags_getFlagInfo>} 
                                            {(DQ (${ Id.VSub_Name flags_usName_))} {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                                          )
                                      )
                                    }
                                  spids: [6725]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                      op: assign_op.Equal
                                      rhs: {(DQ <-> (${ Id.VSub_Name flags_short_))}
                                      spids: [6772]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_ENH)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name flags_short_))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name __FLAGS_NULL))} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                              op: assign_op.Equal
                                              rhs: {(DQ (${ Id.VSub_Name flags_flagStr_) <','>)}
                                              spids: [6825]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name flags_type_)} 
                                          {<-eq>} {(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)} {<-a>} {(DQ (${ Id.VSub_Name flags_usName_))} 
                                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <help>)} {<Id.Lit_RBracket ']'>}
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_boolStr_)
                                              op: assign_op.Equal
                                              rhs: {(SQ <'[no]'>)}
                                              spids: [6873]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_flagStr_)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name flags_flagStr_) <--> 
                                                (${ Id.VSub_Name flags_boolStr_) (${ Id.VSub_Name flags_name_) <':'>
                                              )
                                            }
                                          spids: [6879]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6782 6799]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(${ Id.VSub_Name flags_type_)}
                              arms: [
                                (case_arm
                                  pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_BOOLEAN)}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(${ Id.VSub_Name flags_default_)} {<-eq>} {(${ Id.VSub_Name FLAGS_TRUE)} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                                  op: assign_op.Equal
                                                  rhs: {(SQ <true>)}
                                                  spids: [6934]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [6914 6931]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                              op: assign_op.Equal
                                              rhs: {(SQ <false>)}
                                              spids: [6943]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6908 6911 6952 -1]
                                )
                                (case_arm
                                  pat_list: [
                                    {(${ Id.VSub_Name __FLAGS_TYPE_FLOAT)}
                                    {(${ Id.VSub_Name __FLAGS_TYPE_INTEGER)}
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name flags_default_)}
                                          spids: [6965]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6955 6962 6970 -1]
                                )
                                (case_arm
                                  pat_list: [{(${ Id.VSub_Name __FLAGS_TYPE_STRING)}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'\''> (${ Id.VSub_Name flags_default_) <'\''>)}
                                          spids: [6978]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6973 6976 6987 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_defaultStr_)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'(default: '> (${ Id.VSub_Name flags_defaultStr_) <')'>)}
                                  spids: [6993]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_helpStr_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ <'  '> (${ Id.VSub_Name flags_flagStr_) <'  '> 
                                        (${ Id.VSub_Name flags_help_) <' '> (${ Id.VSub_Name flags_defaultStr_)
                                      )
                                    }
                                  spids: [7004]
                                )
                              ]
                            )
                            (command.Simple
                              words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_helpStrLen_)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name flags_output)}
                                  spids: [7033]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_columns_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: (C {<_flags_columns>})
                                      )
                                    }
                                  spids: [7039]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(${ Id.VSub_Name flags_helpStrLen_)} {<-lt>} {(${ Id.VSub_Name flags_columns_)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Simple
                                      words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [7048 7065]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<echo>}
                                    {
                                      (DQ <'  '> (${ Id.VSub_Name flags_flagStr_) <'  '> 
                                        (${ Id.VSub_Name flags_help_)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_emptyStr_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (command.Pipeline
                                                  children: [
                                                    (C {<echo>} 
                                                      {(DQ <x> (${ Id.VSub_Name flags_flagStr_) <x>)}
                                                    )
                                                    (C {<awk>} 
                                                      {(SQ <'{printf "%"length($0)-2"s", ""}'>)}
                                                    )
                                                  ]
                                                  negated: F
                                                )
                                            )
                                          )
                                        }
                                      spids: [7108]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_helpStr_)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <'  '> (${ Id.VSub_Name flags_emptyStr_) <'  '> 
                                            (${ Id.VSub_Name flags_defaultStr_)
                                          )
                                        }
                                      spids: [7142]
                                    )
                                  ]
                                )
                                (command.Simple
                                  words: [{<_flags_strlen>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:flags_helpStrLen_)
                                      op: assign_op.Equal
                                      rhs: {(${ Id.VSub_Name flags_output)}
                                      spids: [7167]
                                    )
                                  ]
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(${ Id.VSub_Name __FLAGS_GETOPT_VERS)} {<-eq>} {(${ Id.VSub_Name __FLAGS_GETOPT_VERS_STD)} {<-o>} {(${ Id.VSub_Name flags_helpStrLen_)} {<-lt>} 
                                                  {(${ Id.VSub_Name flags_columns_)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Simple
                                          words: [{<echo>} {(DQ (${ Id.VSub_Name flags_helpStr_))}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_GreatAnd '>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      ]
                                      spids: [7174 7205]
                                    )
                                  ]
                                  else_action: [
                                    (command.Simple
                                      words: [
                                        {<echo>}
                                        {(DQ <'    '> (${ Id.VSub_Name flags_defaultStr_))}
                                      ]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '>&'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<2>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [6591 6606]
                )
              ]
            )
            (C {<unset>} {<flags_boolStr_>} {<flags_default_>} {<flags_defaultStr_>} {<flags_emptyStr_>} 
              {<flags_flagStr_>} {<flags_help_>} {<flags_helpStr>} {<flags_helpStrLen>} {<flags_name_>} {<flags_columns_>} {<flags_short_>} 
              {<flags_type_>} {<flags_usName_>}
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name FLAGS_TRUE)}
            )
          ]
        )
    )
    (command.ShFunction
      name: flags_reset
      body: 
        (BraceGroup
          children: [
            (command.ForEach
              iter_name: flags_name_
              iter_words: [{(${ Id.VSub_Name __flags_longNames)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_usName_)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<_flags_underscoreName>} {(${ Id.VSub_Name flags_name_)})
                              )
                            }
                          spids: [7342]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:flags_strToEval_)
                          op: assign_op.Equal
                          rhs: {(DQ <'unset FLAGS_'> (${ Id.VSub_Name flags_usName_))}
                          spids: [7354]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: flags_type_
                      iter_words: [
                        {(${ Id.VSub_Name __FLAGS_INFO_DEFAULT)}
                        {(${ Id.VSub_Name __FLAGS_INFO_HELP)}
                        {(${ Id.VSub_Name __FLAGS_INFO_SHORT)}
                        {(${ Id.VSub_Name __FLAGS_INFO_TYPE)}
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:flags_strToEval_)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name flags_strToEval_) <' __flags_'> 
                                        (${ Id.VSub_Name flags_usName_) <_> (${ Id.VSub_Name flags_type_)
                                      )
                                    }
                                  spids: [7397]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {<eval>} {(${ Id.VSub_Name flags_strToEval_)})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_boolNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7432]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_longNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7438]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_shortNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7444]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:__flags_definedNames)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [7450]
                )
              ]
            )
            (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)})
            (C {<unset>} {<flags_name_>} {<flags_type_>} {<flags_strToEval_>} {<flags_usName_>})
          ]
        )
    )
    (C {<flags_setLoggingLevel>} {(${ Id.VSub_Name __FLAGS_LEVEL_DEFAULT)})
  ]
)