(command.CommandList
  children: [
    (C {(KW_Set set)} {(-o)} {(nounset)})
    (C {(KW_Set set)} {(-o)} {(pipefail)})
    (C {(KW_Set set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (command.ShFunction
      name: assert-deps
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Pipeline
                  children: [(C {(bin/oshc)} {(deps)}) (C {(diff)} {(-u)} {(/dev/fd/3)} {(-)})]
                  negated: F
                )
                (C {(fail)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: usage
      body: 
        (command.BraceGroup
          children: [
            (C {(KW_Set set)} {(Lit_Other '+') (o)} {(errexit)})
            (C {(bin/oshc)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (C {(bin/oshc)} {(invalid)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (command.Pipeline
              children: [(C {(echo)} {(SQ <'<'>)}) (C {(bin/oshc)} {(deps)})]
              negated: F
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (C {(bin/oshc)} {(deps)} {(nonexistent.txt)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (command.ControlFlow token:<ControlFlow_Return return>)
            (C {(echo)} {(--)})
            (C {(bin/oshc)} {(--help)})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(0)}) (C {(fail)})]
            )
            (C {(KW_Set set)} {(-o)} {(errexit)})
          ]
        )
    )
    (command.ShFunction
      name: deps
      body: 
        (command.BraceGroup
          children: [
            (C {(bin/oshc)} {(deps)} {($ VSub_Number '$0')})
            (command.AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(0)}) (C {(fail)})]
            )
            (command.Simple
              words: [{(assert-deps)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 276
                  stdin_parts: [('if { grep foo bar; } then\n') ('  cat hi\n') ('fi\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(DEPS)}
                  here_end_span_id: 280
                  stdin_parts: [('grep\n') ('cat\n')]
                )
              ]
            )
            (command.Simple
              words: [{(assert-deps)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 304
                  stdin_parts: [
                    ('f() {\n')
                    ('  g\n')
                    ('}\n')
                    ('g() {\n')
                    ('  echo G\n')
                    ('}\n')
                    ('f\n')
                    ('grep foo bar\n')
                  ]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(DEPS)}
                  here_end_span_id: 307
                  stdin_parts: [('grep\n')]
                )
              ]
            )
            (command.Simple
              words: [{(assert-deps)}]
              redirects: [
                (redir.HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 328
                  stdin_parts: [('g\n') ('g() {\n') ('  echo G\n') ('}\n') ('grep foo bar\n')]
                )
                (redir.HereDoc
                  op: <Redir_DLess '3<<'>
                  fd: 3
                  here_begin: {(DEPS)}
                  here_end_span_id: 332
                  stdin_parts: [('g\n') ('grep\n')]
                )
              ]
            )
          ]
        )
    )
    (C {(readonly)} {(-a)} 
      {(Lit_VarLike 'PASSING=') (sh_array_literal left:<Op_LParen '('> words:[{(usage)} {(deps)}])}
    )
    (command.ShFunction
      name: all-passing
      body: 
        (command.BraceGroup
          children: [
            (C {(run-all)} 
              {
                (DQ 
                  (braced_var_sub
                    token: <VSub_Name PASSING>
                    bracket_op: (bracket_op.WholeArray op_id:Lit_At)
                  )
                )
              }
            )
          ]
        )
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)