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