(command.CommandList
  children: [
    (C {<echo>} {(SQ <'--- envdir requires arguments'>)})
    (command.CommandList
      children: [
        (command.Sentence child:(C {<envdir>} {<whatever>}) terminator:<Id.Op_Semi _>)
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envdir complains if it cannot read directory'>)})
    (C {<ln>} {<-s>} {<env1>} {<env1>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envdir>} {<env1>} {<echo>} {<yes>})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envdir complains if it cannot read file'>)})
    (C {<rm>} {<env1>})
    (C {<mkdir>} {<env1>})
    (C {<ln>} {<-s>} {<Message>} {<'env1/Message'>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envdir>} {<env1>} {<echo>} {<yes>})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envdir adds variables'>)})
    (C {<rm>} {<'env1/Message'>})
    (command.Simple
      words: [{<echo>} {<This>} {<is>} {<a>} {<test.>} {<This>} {<is>} {<only>} {<a>} {<test.>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'env1/Message'>})]
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envdir>} {<env1>} {<sh>} {<-c>} {(SQ <'echo $Message'>)})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envdir removes variables'>)})
    (C {<mkdir>} {<env2>})
    (C {<touch>} {<'env2/Message'>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envdir>} {<env1>} {<envdir>} {<env2>} {<sh>} {<-c>} {(SQ <'echo $Message'>)})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envdir adds prefix'>)})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<envdir>} {<-p>} {<prefix_>} {<env1>} {<sh>} {<-c>} 
              {(SQ <'echo $Message; echo $prefix_Message'>)}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '$?')})
      ]
    )
  ]
)