(command.CommandList
  children: [
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock requires arguments'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<whatever>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock complains if it cannot create lock file'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<'nonexistent/lock'>} {<echo>} {<wrong>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock -x exits quietly if it cannot create lock file'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<-x>} {<'nonexistent/lock'>} {<echo>} {<wrong>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock creates lock file'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<lock>} {<echo>} {<ok>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock does not truncate lock file'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {<ok>}]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<lock>})]
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<lock>} {<cat>} {<lock>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-f>} {<lock>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock -n complains if file is already locked'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<lock>} {<sh>} {<-c>} {(SQ <'setlock -n lock echo one && echo two'>)}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'--- setlock -nx exits quietly if file is already locked'>)}]
      redirects: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <setlock>
              more_env: []
              words: [{<setlock>} {<lock>} {<sh>} {<-c>} {(SQ <'setlock -nx lock echo one && echo two'>)}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {($ Id.VSub_QMark '?')}]
          redirects: []
          do_fork: T
        )
      ]
    )
  ]
)