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