(command.CommandList
  children: [
    (C {<echo>} {(SQ <'--- envini requires arguments'>)})
    (command.CommandList
      children: [
        (command.Sentence child:(C {<envini>} {<whatever>}) terminator:<Id.Op_Semi _>)
        (C {<echo>} {($ Id.VSub_QMark '?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envini complains if it cannot read file'>)})
    (C {<ln>} {<-s>} {<envi>} {<envi>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envini>} {<envi>} {<echo>} {<yes>})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '?')})
      ]
    )
    (C {<rm>} {<envi>})
    (C {<echo>} {(SQ <'--- envini adds variables'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<envi>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 70
              stdin_parts: [
                <'; comment\n'>
                <'broken\n'>
                <' Message = This is a test.\n'>
                <'[sect]\n'>
                <'Message=This is only a test.    \n'>
              ]
            )
        )
      ]
      more_env: []
      do_fork: T
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<envini>} {<envi>} {<sh>} {<-c>} {(SQ <'echo $Message; echo $sect_Message'>)})
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '?')})
      ]
    )
    (C {<echo>} {(SQ <'--- envini adds prefix'>)})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<envini>} {<-p>} {<prefix_>} {<envi>} {<sh>} {<-c>} 
              {(SQ <'echo $Message; echo $prefix_Message'>)}
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<echo>} {($ Id.VSub_QMark '?')})
      ]
    )
  ]
)