(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPYC)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name OPYC>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(bin) (Lit_Slash /) (opyc)})
                spids: [44 50]
              )
            }
          spids: [43]
        )
      ]
      spids: [43]
    )
    (Assignment
      keyword: Assign_Readonly
      pairs: [(assign_pair lhs:(LhsName name:TMP_DIR) op:Equal rhs:{(_tmp/opy-test)} spids:[55])]
      spids: [53]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name '$TMP_DIR')})
    (FuncDef
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
            (C {(bin/opy_.py)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (C {(bin/opy_.py)} {(--version)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(0)}) (C {(fail)})]
            )
            (C {(bin/opyc)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (C {(bin/opyc)} {(invalid)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(2)}) (C {(fail)})]
            )
            (C {(bin/opyc)} {(--help)})
            (AndOr
              ops: [Op_DPipe]
              children: [(C {(test)} {($ VSub_QMark '$?')} {(-eq)} {(0)}) (C {(fail)})]
            )
          ]
          spids: [70]
        )
      spids: [66 69]
    )
    (FuncDef
      name: parse
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TMP_DIR') (/hello.py)}
                  spids: [233]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('print(1+2)\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [237]
                )
              ]
            )
            (C {($ VSub_Name '$OPYC')} {(parse)} {($ VSub_Name '$TMP_DIR') (/hello.py)})
          ]
          spids: [228]
        )
      spids: [224 227]
    )
    (FuncDef
      name: compile
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$TMP_DIR') (/loop.py)}
                  spids: [262]
                )
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: {(DQ ('for i in xrange(4):\n') ('  print(i*i)\n'))}
                  do_expansion: True
                  here_end: EOF
                  was_filled: T
                  spids: [266]
                )
              ]
            )
            (C {($ VSub_Name '$OPYC')} {(compile)} {($ VSub_Name '$TMP_DIR') (/loop.py)} 
              {($ VSub_Name '$TMP_DIR') (/loop.opyc)}
            )
            (SimpleCommand
              words: [{(python)} {($ VSub_Name '$TMP_DIR') (/loop.opyc)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(out.txt)} spids:[295])]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (SimpleCommand
                  words: [{(diff)} {(out.txt)} {(-)}]
                  redirects: [
                    (HereDoc
                      op_id: Redir_DLess
                      fd: 16777215
                      body: {(DQ ('0\n') ('1\n') ('4\n') ('9\n'))}
                      do_expansion: True
                      here_end: EOF
                      was_filled: T
                      spids: [306]
                    )
                  ]
                )
                (C {(fail)})
              ]
            )
          ]
          spids: [257]
        )
      spids: [253 256]
    )
    (Assignment
      keyword: Assign_Readonly
      flags: [-a]
      pairs: [
        (assign_pair
          lhs: (LhsName name:PASSING)
          op: Equal
          rhs: {(ArrayLiteralPart words:[{(usage)} {(parse)} {(compile)}])}
          spids: [325]
        )
      ]
      spids: [321]
    )
    (FuncDef
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (C {(run-all)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name PASSING>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [350 355]
                  )
                )
              }
            )
          ]
          spids: [344]
        )
      spids: [340 343]
    )
    (FuncDef
      name: run-for-release
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {($ VSub_Number '$0')}
                {(run-all)}
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name PASSING>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [379 384]
                    )
                  )
                }
              ]
              more_env: [(env_pair name:OPYC val:{(_bin/opyc)} spids:[371])]
            )
          ]
          spids: [368]
        )
      spids: [364 367]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)