(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PATH)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [1 3]
              ) (Lit_Other ':') (/command) (Lit_Other ':') (/usr/local/bin) (Lit_Other ':') (/usr/local/sbin) 
              (Lit_Other ':') (/bin) (Lit_Other ':') (/sbin) (Lit_Other ':') (/usr/bin) (Lit_Other ':') (/usr/sbin) (Lit_Other ':') 
              (/usr/X11R6/bin) (Lit_Other ':') (/usr/ucb)
            }
          spids: [0]
        )
      ]
      spids: [0]
    )
    (C {(export)} {(PATH)})
    (C {(umask)} {(022)})
    (FuncDef
      name: die
      body: (BraceGroup children:[(C {(echo)} {(DQ ($ VSub_At '$@'))})(C {(exit)} {(1)})] spids:[37])
      spids: [33 36]
    )
    (FuncDef
      name: catexe
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Number '$1')} spids:[63])]
            )
            (C {(chmod)} {(Lit_Other '+') (x)} {($ VSub_Number '$1')})
          ]
          spids: [58]
        )
      spids: [54 57]
    )
    (FuncDef
      name: filter_svstat
      body: 
        (BraceGroup
          children: [
            (C {(sed)} {(-e)} {(SQ <'s/[0-9]* seconds/x seconds/'>)} {(-e)} {(SQ <'s/pid [0-9]*/pid x/'>)})
          ]
          spids: [82]
        )
      spids: [78 81]
    )
    (AndOr
      children: [(C {(rm)} {(-rf)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not clean up old rts-tmp'))})]
      op_id: Op_DPipe
    )
    (AndOr
      children: [(C {(mkdir)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not create new rts-tmp'))})]
      op_id: Op_DPipe
    )
    (AndOr
      children: [(C {(cd)} {(rts-tmp)}) (C {(die)} {(DQ ('Could not change to rts-tmp'))})]
      op_id: Op_DPipe
    )
    (AndOr
      children: [(C {(mkdir)} {(test.sv)}) (C {(die)} {(DQ ('Could not create test.sv'))})]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TOP)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [153 155]
              )
            }
          spids: [152]
        )
      ]
      spids: [152]
    )
    (C {(echo)} {(SQ <'--- envdir requires arguments'>)})
    (Sentence child:(C {(envdir)} {(whatever)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envdir complains if it cannot read directory'>)})
    (C {(ln)} {(-s)} {(env1)} {(env1)})
    (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envdir complains if it cannot read file'>)})
    (C {(rm)} {(env1)})
    (C {(mkdir)} {(env1)})
    (C {(ln)} {(-s)} {(Message)} {(env1/Message)})
    (Sentence child:(C {(envdir)} {(env1)} {(echo)} {(yes)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envdir adds variables'>)})
    (C {(rm)} {(env1/Message)})
    (SimpleCommand
      words: [{(echo)} {(This)} {(is)} {(a)} {(test.)} {(This)} {(is)} {(only)} {(a)} {(test.)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(env1/Message)} spids:[267])]
    )
    (Sentence
      child: (C {(envdir)} {(env1)} {(sh)} {(-c)} {(SQ <'echo $Message'>)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envdir removes variables'>)})
    (C {(mkdir)} {(env2)})
    (C {(touch)} {(env2/Message)})
    (Sentence
      child: (C {(envdir)} {(env1)} {(envdir)} {(env2)} {(sh)} {(-c)} {(SQ <'echo $Message'>)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envuidgid insists on two arguments'>)})
    (Sentence child:(C {(envuidgid)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence child:(C {(envuidgid)} {(root)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envuidgid sets UID=0 for root'>)})
    (Sentence child:(C {(envuidgid)} {(root)} {(printenv)} {(UID)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- envuidgid complains if it cannot run program'>)})
    (Sentence child:(C {(envuidgid)} {(root)} {(./nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- fghack insists on an argument'>)})
    (Sentence child:(C {(fghack)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- fghack complains if it cannot run program'>)})
    (Sentence child:(C {(fghack)} {(./nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- fghack runs a program'>)})
    (Sentence child:(C {(fghack)} {(sh)} {(-c)} {(SQ <'echo hi &'>)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- match handles literal string'>)})
    (C {(matchtest)} {(one)} {(one)})
    (C {(matchtest)} {(one)} {(SQ )})
    (C {(matchtest)} {(one)} {(on)})
    (C {(matchtest)} {(one)} {(onf)})
    (C {(matchtest)} {(one)} {(SQ <'one*'>)})
    (C {(matchtest)} {(one)} {(onetwo)})
    (C {(echo)} {(SQ <'--- match handles empty string'>)})
    (C {(matchtest)} {(SQ )} {(SQ )})
    (C {(matchtest)} {(SQ )} {(x)})
    (C {(echo)} {(SQ <'--- match handles full-line wildcard'>)})
    (C {(matchtest)} {(SQ <'*'>)} {(SQ )})
    (C {(matchtest)} {(SQ <'*'>)} {(x)})
    (C {(matchtest)} {(SQ <'*'>)} {(SQ <'*'>)})
    (C {(matchtest)} {(SQ <'*'>)} {(one)})
    (C {(echo)} {(SQ <'--- match handles ending wildcard'>)})
    (C {(matchtest)} {(SQ <'one*'>)} {(one)})
    (C {(matchtest)} {(SQ <'one*'>)} {(SQ <'one*'>)})
    (C {(matchtest)} {(SQ <'one*'>)} {(onetwo)})
    (C {(matchtest)} {(SQ <'one*'>)} {(SQ )})
    (C {(matchtest)} {(SQ <'one*'>)} {(x)})
    (C {(matchtest)} {(SQ <'one*'>)} {(on)})
    (C {(matchtest)} {(SQ <'one*'>)} {(onf)})
    (C {(echo)} {(SQ <'--- match handles wildcard termination'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <' one'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'x one'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'* one'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'xy one'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <one>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <' two'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'  one'>)})
    (C {(matchtest)} {(SQ <'* one'>)} {(SQ <'xy one '>)})
    (C {(echo)} {(SQ <'--- match handles multiple wildcards'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'  one'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'x  one'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' y one'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'x y one'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <one>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <' one'>)})
    (C {(matchtest)} {(SQ <'* * one'>)} {(SQ <'   one'>)})
    (C {(echo)} {(SQ <'--- fnmatch handles literal string'>)})
    (C {(matchtest)} {(Fone)} {(one)})
    (C {(matchtest)} {(Fone)} {(SQ )})
    (C {(matchtest)} {(Fone)} {(on)})
    (C {(matchtest)} {(Fone)} {(onf)})
    (C {(matchtest)} {(Fone)} {(SQ <'one*'>)})
    (C {(matchtest)} {(Fone)} {(onetwo)})
    (C {(echo)} {(SQ <'--- fnmatch handles empty string'>)})
    (C {(matchtest)} {(SQ <F>)} {(SQ )})
    (C {(matchtest)} {(SQ <F>)} {(x)})
    (C {(echo)} {(SQ <'--- fnmatch handles full-line wildcard'>)})
    (C {(matchtest)} {(SQ <'F*'>)} {(SQ )})
    (C {(matchtest)} {(SQ <'F*'>)} {(x)})
    (C {(matchtest)} {(SQ <'F*'>)} {(SQ <'*'>)})
    (C {(matchtest)} {(SQ <'F*'>)} {(one)})
    (C {(echo)} {(SQ <'--- fnmatch handles ending wildcard'>)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(one)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(SQ <'one*'>)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(onetwo)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(SQ )})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(x)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(on)})
    (C {(matchtest)} {(SQ <'Fone*'>)} {(onf)})
    (C {(echo)} {(SQ <'--- fnmatch handles wildcard termination'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <' one'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'x one'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'* one'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'xy one'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <one>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <' two'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'  one'>)})
    (C {(matchtest)} {(SQ <'F* one'>)} {(SQ <'xy one '>)})
    (C {(echo)} {(SQ <'--- fnmatch handles multiple wildcards'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'  one'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'x  one'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' y one'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'x y one'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <one>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <' one'>)})
    (C {(matchtest)} {(SQ <'F* * one'>)} {(SQ <'   one'>)})
    (C {(echo)} {(SQ <'--- multilog prints nothing with no actions'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1159 1170]
            )
            (C {(multilog)})
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog e prints to stderr'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1188 1199]
            )
            (SimpleCommand
              words: [{(multilog)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1207])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog inserts newline after partial final line'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (Pipeline
                      children: [(C {(echo)} {(two)}) (C {(tr)} {(-d)} {(SQ <'\\012'>)})]
                      negated: False
                    )
                  ]
                )
              spids: [1222 1243]
            )
            (SimpleCommand
              words: [{(multilog)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1251])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles multiple actions'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1266 1277]
            )
            (SimpleCommand
              words: [{(multilog)} {(e)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1287])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles wildcard -'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1302 1313]
            )
            (SimpleCommand
              words: [{(multilog)} {(SQ <'-*'>)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1325])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles literal +'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1340 1351]
            )
            (SimpleCommand
              words: [{(multilog)} {(SQ <'-*'>)} {(SQ <'+one'>)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1367])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles fnmatch -'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1382 1393]
            )
            (SimpleCommand
              words: [{(multilog)} {(F)} {(SQ <'-*'>)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1407])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles fnmatch +'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (Sentence child:(C {(echo)} {(two)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(one)} {(two)})
                  ]
                )
              spids: [1422 1440]
            )
            (SimpleCommand
              words: [{(multilog)} {(F)} {(SQ <'-*'>)} {(SQ <'+*o*'>)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1458])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles long lines for stderr'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (C {(echo)} 
              {
                (
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
                )
              }
            )
            (SimpleCommand
              words: [{(multilog)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1484])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence
      child: 
        (Pipeline
          children: [
            (C {(echo)} 
              {
                (
01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
                )
              }
            )
            (SimpleCommand
              words: [{(multilog)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1503])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence
      child: 
        (Pipeline
          children: [
            (C {(echo)} 
              {
                (
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
                )
              }
            )
            (SimpleCommand
              words: [{(multilog)} {(e)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1522])]
            )
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- multilog handles status files'>)})
    (C {(rm)} {(-f)} {(test.status)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [1543 1554]
            )
            (C {(multilog)} {(Lit_Other '=') (test.status)})
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (Pipeline
      children: [
        (SimpleCommand
          words: [{(uniq)} {(-c)}]
          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(test.status)} spids:[1572])]
        )
        (C {(sed)} {(SQ <'s/[ \t]*[ \t]/_/g'>)})
      ]
      negated: False
    )
    (C {(echo)} {(SQ <'--- multilog t has the right format'>)})
    (Pipeline
      children: [
        (Subshell
          child: 
            (CommandList
              children: [
                (Sentence child:(C {(echo)} {(ONE)}) terminator:<Op_Semi ';'>)
                (C {(echo)} {(TWO)})
              ]
            )
          spids: [1591 1602]
        )
        (SimpleCommand
          words: [{(multilog)} {(t)} {(e)}]
          redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1612])]
        )
        (C {(sed)} {(SQ <'s/[0-9a-f]/x/g'>)})
      ]
      negated: False
    )
    (C {(echo)} {(SQ <'--- svstat handles new and nonexistent directories'>)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(echo)} {(hi)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/run)} spids:[1646])]
      spids: [1629 1644]
    )
    (C {(chmod)} {(755)} {(test.sv/run)})
    (C {(touch)} {(test.sv/down)})
    (Sentence child:(C {(svstat)} {(test.sv)} {(nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- svc handles new and nonexistent directories'>)})
    (Sentence child:(C {(svc)} {(test.sv)} {(nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- svok handles new and nonexistent directories'>)})
    (Sentence child:(C {(svok)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence child:(C {(svok)} {(nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- supervise handles nonexistent directories'>)})
    (Sentence child:(C {(supervise)} {(nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- pgrphack insists on an argument'>)})
    (Sentence child:(C {(pgrphack)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- pgrphack complains if it cannot run program'>)})
    (Sentence child:(C {(pgrphack)} {(./nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- pgrphack runs a program'>)})
    (Sentence child:(C {(pgrphack)} {(echo)} {(ok)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- readproctitle insists on an argument'>)})
    (Sentence
      child: 
        (SimpleCommand
          words: [{(readproctitle)}]
          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[1801])]
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- readproctitle insists on last argument being at least five bytes'>)})
    (Sentence
      child: 
        (SimpleCommand
          words: [{(readproctitle)} {(..........)} {(four)}]
          redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(/dev/null)} spids:[1823])]
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock requires arguments'>)})
    (Sentence child:(C {(setlock)} {(whatever)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock complains if it cannot create lock file'>)})
    (Sentence
      child: (C {(setlock)} {(nonexistent/lock)} {(echo)} {(wrong)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock -x exits quietly if it cannot create lock file'>)})
    (Sentence
      child: (C {(setlock)} {(-x)} {(nonexistent/lock)} {(echo)} {(wrong)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock creates lock file'>)})
    (Sentence child:(C {(setlock)} {(lock)} {(echo)} {(ok)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock does not truncate lock file'>)})
    (SimpleCommand
      words: [{(echo)} {(ok)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(lock)} spids:[1920])]
    )
    (Sentence child:(C {(setlock)} {(lock)} {(cat)} {(lock)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(rm)} {(-f)} {(lock)})
    (C {(echo)} {(SQ <'--- setlock -n complains if file is already locked'>)})
    (Sentence
      child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -n lock echo one && echo two'>)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- setlock -nx exits quietly if file is already locked'>)})
    (Sentence
      child: (C {(setlock)} {(lock)} {(sh)} {(-c)} {(SQ <'setlock -nx lock echo one && echo two'>)})
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- softlimit insists on an argument'>)})
    (Sentence child:(C {(softlimit)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- softlimit complains if it cannot run program'>)})
    (Sentence child:(C {(softlimit)} {(./nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- softlimit -p0 still allows exec'>)})
    (Sentence child:(C {(softlimit)} {(-p0)} {(echo)} {(./nonexistent)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- supervise starts, svok works, svup works, svstat works, svc -x works'>)})
    (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>)
    (Until
      cond: [(C {(svok)} {(test.sv)})]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[21132120])
    )
    (Sentence child:(C {(svup)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence child:(C {(svup)} {(-l)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (Sentence child:(C {(svup)} {(-L)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (Pipeline
      children: [
        (Subshell
          child: 
            (CommandList
              children: [
                (Sentence child:(C {(svstat)} {(test.sv)}) terminator:<Op_Semi ';'>)
                (Sentence
                  child: (C {(echo)} {($ VSub_QMark '$?')})
                  terminator: <Op_Semi ';'>
                )
              ]
            )
          spids: [2153 2165]
        )
        (C {(filter_svstat)})
      ]
      negated: False
    )
    (Sentence child:(C {(svc)} {(-x)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(wait)})
    (Sentence child:(C {(svstat)} {(test.sv)}) terminator:<Op_Semi ';'>)
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(echo)} {(SQ <'--- svc -ox works'>)})
    (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>)
    (Until
      cond: [(C {(svok)} {(test.sv)})]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[22122219])
    )
    (C {(svc)} {(-ox)} {(test.sv)})
    (C {(wait)})
    (C {(echo)} {(SQ <'--- svstat and svup work for up services'>)})
    (SimpleCommand
      words: [{(catexe)} {(test.sv/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('#!/bin/sh\n') ('sleep 1\n') ('svstat .\n') ('echo ') ($ VSub_QMark '$?') ('\n') 
                ('svstat -l .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -L .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svup .\n') 
                ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -L .\n') ('echo ') 
                (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -l .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2240]
        )
      ]
    )
    (Sentence
      child: (Pipeline children:[(C {(supervise)} {(test.sv)})(C {(filter_svstat)})] negated:False)
      terminator: <Op_Amp '&'>
    )
    (Until
      cond: [(C {(svok)} {(test.sv)})]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[22862293])
    )
    (C {(svc)} {(-ox)} {(test.sv)})
    (C {(wait)})
    (C {(echo)} {(SQ <'--- svstat and svup work for logged services'>)})
    (SimpleCommand
      words: [{(catexe)} {(test.sv/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('#!/bin/sh\n') ('sleep 1\n') ('svstat .\n') ('echo ') ($ VSub_QMark '$?') ('\n') 
                ('svstat -l .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svstat -L .\n') ('echo ') ($ VSub_QMark '$?') ('\n') ('svup .\n') 
                ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -L .\n') ('echo ') 
                (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n') ('svup -l .\n') ('echo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2314]
        )
      ]
    )
    (SimpleCommand
      words: [{(catexe)} {(test.sv/log)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('exec cat\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2348]
        )
      ]
    )
    (Sentence
      child: (Pipeline children:[(C {(supervise)} {(test.sv)})(C {(filter_svstat)})] negated:False)
      terminator: <Op_Amp '&'>
    )
    (Until
      cond: [(C {(svok)} {(test.sv)})]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[23702377])
    )
    (C {(svc)} {(-Lolox)} {(test.sv)})
    (C {(wait)})
    (C {(rm)} {(-f)} {(test.sv/log)})
    (C {(echo)} {(SQ <'--- svc -u works'>)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (Sentence child:(C {(echo)} {(echo)} {(first)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(mv)} {(run2)} {(run)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/run)} spids:[2426])]
      spids: [2400 2424]
    )
    (C {(chmod)} {(755)} {(test.sv/run)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (Sentence child:(C {(echo)} {(echo)} {(second)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(svc)} {(-x)} {(.)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/run2)} spids:[2462])]
      spids: [2436 2460]
    )
    (C {(chmod)} {(755)} {(test.sv/run2)})
    (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>)
    (Until
      cond: [(C {(svok)} {(test.sv)})]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[24842491])
    )
    (C {(svc)} {(-u)} {(test.sv)})
    (C {(wait)})
    (C {(echo)} {(SQ <'--- supervise runs stop on down'>)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(svc)} {(-dx)} {(.)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/run)} spids:[2526])]
      spids: [2507 2524]
    )
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(echo)} {(KW_In in)} {(stop)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/stop)} spids:[2548])]
      spids: [2529 2546]
    )
    (C {(rm)} {(-f)} {(test.sv/down)})
    (C {(chmod)} {(Lit_Other '+') (x)} {(test.sv/run)} {(test.sv/stop)})
    (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>)
    (C {(wait)})
    (C {(rm)} {(-f)} {(test.sv/stop)})
    (C {(echo)})
    (C {(echo)} {(SQ <'--- supervise stops log after main'>)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(SQ <'exec ../../sleeper'>)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/log)} spids:[2606])]
      spids: [2589 2604]
    )
    (C {(chmod)} {(Lit_Other '+') (x)} {(test.sv/log)})
    (C {(supervise)} {(test.sv)})
    (C {(wait)})
    (C {(rm)} {(-f)} {(test.sv/log)})
    (C {(echo)})
    (Subshell
      child: 
        (CommandList
          children: [
            (Sentence child:(C {(echo)} {(SQ <'#!/bin/sh'>)}) terminator:<Op_Semi ';'>)
            (C {(echo)} {(SQ <'exec ../../sleeper'>)})
          ]
        )
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(test.sv/run)} spids:[2647])]
      spids: [2630 2645]
    )
    (C {(chmod)} {(755)} {(test.sv/run)})
    (C {(echo)} {(SQ <'--- svc sends right signals'>)})
    (Sentence child:(C {(supervise)} {(test.sv)}) terminator:<Op_Amp '&'>)
    (C {(sleep)} {(1)})
    (C {(svc)} {(-a)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-c)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-h)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-i)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-t)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-q)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-1)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-2)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-w)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-d)} {(test.sv)})
    (C {(sleep)} {(1)})
    (C {(svc)} {(-xk)} {(test.sv)})
    (C {(wait)})
    (C {(mkdir)} {(service)} {(svc0)} {(svc1)} {(svc2)} {(svc2/log)})
    (SimpleCommand
      words: [{(catexe)} {(svc0/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('echo svc0 ran >> output\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2802]
        )
      ]
    )
    (SimpleCommand
      words: [{(catexe)} {(svc1/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('echo svc1 ran\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2813]
        )
      ]
    )
    (SimpleCommand
      words: [{(catexe)} {(svc1/log)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('cat > output\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2824]
        )
      ]
    )
    (SimpleCommand
      words: [{(catexe)} {(svc2/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('echo svc2 ran\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2835]
        )
      ]
    )
    (SimpleCommand
      words: [{(catexe)} {(svc2/log/run)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('#!/bin/sh\n') ('cat > ../output\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [2846]
        )
      ]
    )
    (C {(ln)} {(-s)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(pwd)})])
          left_token: <Left_Backtick '`'>
          spids: [2857 2859]
        ) (/svc) (Lit_Other '[') (0-9) (Lit_Other ']')
      } {(service/)}
    )
    (Sentence
      child: 
        (SimpleCommand
          words: [
            {(svscan)}
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [2870 2872]
              ) (/service)
            }
          ]
          redirects: [
            (Redir op_id:Redir_Great fd:-1 arg_word:{(svscan.log)} spids:[2875])
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2878])
          ]
        )
      terminator: <Op_Amp '&'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:svscanpid)
          op: Equal
          rhs: {($ VSub_Bang '$!')}
          spids: [2883]
        )
      ]
      spids: [2883]
    )
    (Until
      cond: [
        (AndOr
          children: [
            (C {(svok)} {(svc0)})
            (AndOr
              children: [
                (C {(svok)} {(svc1)})
                (AndOr
                  children: [(C {(svok)} {(svc2)}) (C {(svok)} {(svc2/log)})]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          op_id: Op_DAmp
        )
      ]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[29112918])
    )
    (C {(kill)} {($ VSub_Name '$svscanpid')})
    (SimpleCommand
      words: [{(wait)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2930])
        (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2933])
      ]
    )
    (C {(svc)} {(-dx)} {(svc) (Lit_Other '[') (0-9) (Lit_Other ']')} {(svc2/log)})
    (Until
      cond: [
        (AndOr
          children: [
            (Pipeline children:[(C {(svok)} {(svc0)})] negated:True)
            (AndOr
              children: [
                (Pipeline children:[(C {(svok)} {(svc1)})] negated:True)
                (AndOr
                  children: [
                    (Pipeline children:[(C {(svok)} {(svc2)})] negated:True)
                    (Pipeline children:[(C {(svok)} {(svc2/log)})] negated:True)
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          op_id: Op_DAmp
        )
      ]
      body: (DoGroup children:[(C {(sleep)} {(1)})] spids:[29802987])
    )
    (C {(head)} {(-n)} {(1)} {(svc) (Lit_Other '[') (0-9) (Lit_Other ']') (/output)})
    (C {(cat)} {(svscan.log)})
    (C {(rm)} {(-r)} {(svc0)} {(svc1)} {(svc2)} {(service)})
    (C {(echo)} {(SQ <'--- tai64n has the right format'>)})
    (Pipeline
      children: [
        (Subshell
          child: 
            (CommandList
              children: [
                (Sentence child:(C {(echo)} {(ONE)}) terminator:<Op_Semi ';'>)
                (C {(echo)} {(TWO)})
              ]
            )
          spids: [3035 3046]
        )
        (C {(tai64n)})
        (C {(sed)} {(SQ <'s/[0-9a-f]/x/g'>)})
      ]
      negated: False
    )
    (C {(echo)} {(SQ <'--- tai64nlocal handles non-@ lines correctly'>)})
    (Sentence
      child: 
        (Pipeline
          children: [
            (Subshell
              child: 
                (CommandList
                  children: [
                    (Sentence child:(C {(echo)} {(one)}) terminator:<Op_Semi ';'>)
                    (C {(echo)} {(two)})
                  ]
                )
              spids: [3067 3078]
            )
            (C {(tai64nlocal)})
          ]
          negated: False
        )
      terminator: <Op_Semi ';'>
    )
    (C {(echo)} {($ VSub_QMark '$?')})
    (C {(cd)} {(..)})
    (C {(rm)} {(-rf)} {(rts-tmp)})
  ]
)