(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (C {(source)} {(test/common.sh)})
    (FuncDef
      name: time-tool
      body: 
        (BraceGroup
          children: [
            (C 
              {
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number '$0')})])
                  left_token: <Left_CommandSub '$('>
                  spids: [44 48]
                ) (/time.py)
              } {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [41]
        )
      spids: [37 40]
    )
    (FuncDef
      name: test-tsv
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:out) op:Equal rhs:{(_tmp/time.tsv)} spids:[67])]
              spids: [65]
            )
            (C {(rm)} {(-f)} {($ VSub_Name '$out')})
            (ForEach
              iter_name: i
              iter_words: [{(1)} {(2)} {(3)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--)} {(sleep)} 
                      {(0.0) (${ VSub_Name i)}
                    )
                  ]
                  spids: [92 113]
                )
              spids: [84 90]
            )
            (C {(cat)} {($ VSub_Name '$out')})
          ]
          spids: [62]
        )
      spids: [58 61]
    )
    (FuncDef
      name: test-cannot-serialize
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:out)
                  op: Equal
                  rhs: {(_tmp/time2.tsv)}
                  spids: [132]
                )
              ]
              spids: [130]
            )
            (C {(rm)} {(-f)} {($ VSub_Name '$out')})
            (C {(set)} {(Lit_Other '+') (o)} {(errexit)})
            (Sentence
              child: 
                (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--field)} 
                  {
                    (SingleQuotedPart
                      left: <Left_DollarSingleQuote "$'">
                      tokens: [<Char_OneChar '\\n'>]
                    )
                  } {(--)} {(sleep)} {(0.001)}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [178]
                )
              ]
              spids: [178]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Name '$status')} {(Lit_Other '=')} {(1)})
                (C {(fail)} {(DQ ('Unexpected status ') ($ VSub_Name '$status'))})
              ]
            )
            (Sentence
              child: 
                (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--field)} 
                  {
                    (SingleQuotedPart
                      left: <Left_DollarSingleQuote "$'">
                      tokens: [<Char_OneChar '\\t'>]
                    )
                  } {(--)} {(sleep)} {(0.001)}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [226]
                )
              ]
              spids: [226]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Name '$status')} {(Lit_Other '=')} {(1)})
                (C {(fail)} {(DQ ('Unexpected status ') ($ VSub_Name '$status'))})
              ]
            )
            (Sentence
              child: 
                (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--field)} {(SQ <'"'>)} {(--)} 
                  {(sleep)} {(0.001)}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [274]
                )
              ]
              spids: [274]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Name '$status')} {(Lit_Other '=')} {(1)})
                (C {(fail)} {(DQ ('Unexpected status ') ($ VSub_Name '$status'))})
              ]
            )
            (Sentence
              child: 
                (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--field)} {(SQ <'\\'>)} {(--)} 
                  {(sleep)} {(0.001)}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [322]
                )
              ]
              spids: [322]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Name '$status')} {(Lit_Other '=')} {(0)})
                (C {(fail)} {(DQ ('Unexpected status ') ($ VSub_Name '$status'))})
              ]
            )
            (Sentence
              child: 
                (C {(time-tool)} {(--tsv)} {(-o)} {($ VSub_Name '$out')} {(--field)} {(SQ <' '>)} {(--)} 
                  {(sleep)} {(0.001)}
                )
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:status)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [370]
                )
              ]
              spids: [370]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {($ VSub_Name '$status')} {(Lit_Other '=')} {(0)})
                (C {(fail)} {(DQ ('Unexpected status ') ($ VSub_Name '$status'))})
              ]
            )
            (C {(set)} {(-o)} {(errexit)})
            (C {(cat)} {($ VSub_Name '$out')})
          ]
          spids: [127]
        )
      spids: [123 126]
    )
    (FuncDef
      name: all-passing
      body: 
        (BraceGroup
          children: [
            (C {(test-tsv)})
            (C {(test-cannot-serialize)})
            (C {(echo)})
            (C {(echo)} {(DQ ('All tests in ') ($ VSub_Number '$0') (' passed.'))})
          ]
          spids: [412]
        )
      spids: [408 411]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)