(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'expectedF='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'expectedF='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expectedF='> name:expectedF)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name TMPDIR>
                  var_name: TMPDIR
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: {<Id.Lit_Slash '/'> <tmp>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                ) <'/expected'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'returnF='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'returnF='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'returnF='> name:returnF)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name TMPDIR>
                  var_name: TMPDIR
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: {<Id.Lit_Slash '/'> <tmp>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                ) <'/return'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'stdoutF='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'stdoutF='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stdoutF='> name:stdoutF)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name TMPDIR>
                  var_name: TMPDIR
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: {<Id.Lit_Slash '/'> <tmp>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                ) <'/STDOUT'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'stderrF='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'stderrF='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stderrF='> name:stderrF)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name TMPDIR>
                  var_name: TMPDIR
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: {<Id.Lit_Slash '/'> <tmp>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                ) <'/STDERR'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./shflags_test_helpers'>}]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <testHelp>
      name: testHelp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <_testHelp>
              more_env: []
              words: [{<_testHelp>} {(SQ <-h>)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <flags_getoptIsEnh>
                  more_env: []
                  words: [{<flags_getoptIsEnh>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <_testHelp>
              more_env: []
              words: [{<_testHelp>} {(SQ <--help>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_testHelp>
      name: _testHelp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'flag='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'flag='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flag='> name:flag)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <th_clearReturn>
              more_env: []
              words: [{<th_clearReturn>}]
              redirects: []
              do_fork: T
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.Simple
                      blame_tok: <FLAGS>
                      more_env: []
                      words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name stdoutF))}
                        )
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {(DQ (${ Id.VSub_Name stderrF))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {($ Id.VSub_QMark '?')}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name returnF))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <assertFalse>
              more_env: []
              words: [
                {<assertFalse>}
                {(SQ <'short help request should have returned a false exit code.'>)}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <th_queryReturn>
                          more_env: []
                          words: [{<th_queryReturn>}]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <grep>
              more_env: []
              words: [{<grep>} {(SQ <'show this help'>)} {(DQ (${ Id.VSub_Name stderrF))}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'grepped='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'grepped='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'grepped='> name:grepped)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assertTrue>
              more_env: []
              words: [
                {<assertTrue>}
                {(SQ <'short request for help should have produced some help output.'>)}
                {(${ Id.VSub_Name grepped)}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name grepped)}
                    {<-ne>}
                    {(DQ (${ Id.VSub_Name FLAGS_TRUE))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <th_showOutput>
                  more_env: []
                  words: [{<th_showOutput>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (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: {(SQ <'this is a test'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <FLAGS>
                      more_env: []
                      words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name stdoutF))}
                        )
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {(DQ (${ Id.VSub_Name stderrF))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <grep>
              more_env: []
              words: [{<grep>} {(SQ <'this is a test'>)} {(DQ (${ Id.VSub_Name stderrF))}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'grepped='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'grepped='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'grepped='> name:grepped)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assertTrue>
              more_env: []
              words: [
                {<assertTrue>}
                {(SQ <'setting FLAGS_HELP did not produce expected result'>)}
                {(${ Id.VSub_Name grepped)}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name grepped)}
                    {<-ne>}
                    {(DQ (${ Id.VSub_Name FLAGS_TRUE))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <th_showOutput>
                  more_env: []
                  words: [{<th_showOutput>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.Simple
                      blame_tok: <DEFINE_boolean>
                      more_env: []
                      words: [
                        {<DEFINE_boolean>}
                        {<b>}
                        {<false>}
                        {(DQ <'help string containing a \' char'>)}
                        {<b>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <FLAGS>
                      more_env: []
                      words: [{<FLAGS>} {(DQ (${ Id.VSub_Name flag))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name stdoutF))}
                        )
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {(DQ (${ Id.VSub_Name stderrF))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <grep>
              more_env: []
              words: [
                {<grep>}
                {(DQ <'help string containing a \' char'>)}
                {(DQ (${ Id.VSub_Name stderrF))}
              ]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'grepped='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'grepped='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'grepped='> name:grepped)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assertTrue>
              more_env: []
              words: [
                {<assertTrue>}
                {(DQ <'help strings containing apostrophes don\'t work'>)}
                {(${ Id.VSub_Name grepped)}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(${ Id.VSub_Name grepped)}
                    {<-ne>}
                    {(DQ (${ Id.VSub_Name FLAGS_TRUE))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <th_showOutput>
                  more_env: []
                  words: [{<th_showOutput>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <mock_flags_columns>
      name: mock_flags_columns
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<80>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <_doDefines>
      name: _doDefines
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <DEFINE_boolean>
              more_env: []
              words: [{<DEFINE_boolean>} {(SQ <force>)} {<false>} {(SQ )} {<f>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <testStandardHelpOutput>
      name: testStandardHelpOutput
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <flags_getoptIsStd>
                  more_env: []
                  words: [{<flags_getoptIsStd>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <startSkipping>
                  more_env: []
                  words: [{<startSkipping>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <_doDefines>
              more_env: []
              words: [{<_doDefines>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'help='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'help='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'help='> name:help)
                  op: assign_op.Equal
                  rhs: {(SQ <'USAGE: standard [flags] args'>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name expectedF))}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        (${ Id.VSub_Name help)
                        <'\n'>
                        <'flags:\n'>
                        <'  -f  (default: false)\n'>
                        <'  -h  show this help (default: false)\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.ShFunction
                      name_tok: <_flags_columns>
                      name: _flags_columns
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <mock_flags_columns>
                                  more_env: []
                                  words: [{<mock_flags_columns>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                    (command.Sentence
                      child: 
                        (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: {(${ Id.VSub_Name help)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <FLAGS>
                      more_env: []
                      words: [{<FLAGS>} {<-h>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name stdoutF))}
                        )
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {(DQ (${ Id.VSub_Name stderrF))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <diff>
              more_env: []
              words: [{<diff>} {(DQ (${ Id.VSub_Name expectedF))} {(DQ (${ Id.VSub_Name stderrF))}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'r3turn='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'r3turn='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'r3turn='> name:r3turn)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assertTrue>
              more_env: []
              words: [{<assertTrue>} {(SQ <'unexpected help output'>)} {(${ Id.VSub_Name r3turn)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <th_showOutput>
              more_env: []
              words: [
                {<th_showOutput>}
                {(${ Id.VSub_Name r3turn)}
                {(DQ (${ Id.VSub_Name stdoutF))}
                {(DQ (${ Id.VSub_Name stderrF))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <testEnhancedHelpOutput>
      name: testEnhancedHelpOutput
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <flags_getoptIsEnh>
                  more_env: []
                  words: [{<flags_getoptIsEnh>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <startSkipping>
                  more_env: []
                  words: [{<startSkipping>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <_doDefines>
              more_env: []
              words: [{<_doDefines>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'help='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'help='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'help='> name:help)
                  op: assign_op.Equal
                  rhs: {(SQ <'USAGE: enhanced [flags] args'>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name expectedF))}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        (${ Id.VSub_Name help)
                        <'\n'>
                        <'flags:\n'>
                        <'  -f,--[no]force:  (default: false)\n'>
                        <'  -h,--help:  show this help (default: false)\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.ShFunction
                      name_tok: <_flags_columns>
                      name: _flags_columns
                      body: 
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <mock_flags_columns>
                                  more_env: []
                                  words: [{<mock_flags_columns>}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                    )
                    (command.Sentence
                      child: 
                        (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: {(${ Id.VSub_Name help)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <FLAGS>
                      more_env: []
                      words: [{<FLAGS>} {<-h>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name stdoutF))}
                        )
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {(DQ (${ Id.VSub_Name stderrF))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
            (command.Simple
              blame_tok: <diff>
              more_env: []
              words: [{<diff>} {(DQ (${ Id.VSub_Name expectedF))} {(DQ (${ Id.VSub_Name stderrF))}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'differed='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'differed='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'differed='> name:differed)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assertTrue>
              more_env: []
              words: [{<assertTrue>} {(SQ <'unexpected help output'>)} {(${ Id.VSub_Name differed)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <th_showOutput>
              more_env: []
              words: [
                {<th_showOutput>}
                {(${ Id.VSub_Name differed)}
                {(DQ (${ Id.VSub_Name stdoutF))}
                {(DQ (${ Id.VSub_Name stderrF))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <oneTimeSetUp>
      name: oneTimeSetUp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <th_oneTimeSetUp>
              more_env: []
              words: [{<th_oneTimeSetUp>}]
              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: <flags_getoptIsStd>
                              more_env: []
                              words: [{<flags_getoptIsStd>}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <th_warn>
                      more_env: []
                      words: [
                        {<th_warn>}
                        {(SQ <'Standard version of getopt found. Enhanced tests will be skipped.'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  spids: [797 802]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <th_warn>
              more_env: []
              words: [
                {<th_warn>}
                {(SQ <'Enhanced version of getopt found. Standard tests will be skipped.'>)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <setUp>
      name: setUp
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <flags_reset>
              more_env: []
              words: [{<flags_reset>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (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 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
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'SHUNIT_PARENT='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'SHUNIT_PARENT='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHUNIT_PARENT='> name:SHUNIT_PARENT)
              op: assign_op.Equal
              rhs: {($ Id.VSub_Number 0)}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ (${ Id.VSub_Name TH_SHUNIT))}]
      redirects: []
      do_fork: T
    )
  ]
)