(CommandList
  children: [
    (C {(.)} {(./martin.sh)})
    (Sentence child:(C {(get)} {(DQ (/))} {(root)}) terminator:<Op_Semi ';'>)
    (FuncDef
      name: root
      body: 
        (BraceGroup
          children: [
            (C {(header)} {(DQ (Content-Type))} {(DQ ('text/html; charset=utf-8'))})
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ('<!DOCTYPE html>\n') ('<html>\n') ('  <head>\n') ('    <meta charset=') 
                        (Right_DoubleQuote '"') (utf-8) (Right_DoubleQuote '"') ('>\n') ('    <title>hello world from ') ($ VSub_Name '$PATH_INFO') 
                        ('</title>\n') ('  </head>\n') ('  <body>\n') ('    <img src=') (Right_DoubleQuote '"') (/DeanMartin.jpg) 
                        (Right_DoubleQuote '"') ('>\n') ('    <h1>hello world from ') ($ VSub_Name '$PATH_INFO') ('</h1>\n') ('    <a href=') 
                        (Right_DoubleQuote '"') (/ps) (Right_DoubleQuote '"') ('>processes</a>\n') ('    <a href=') (Right_DoubleQuote '"') (/redirect) 
                        (Right_DoubleQuote '"') ('>redirect</a>\n') ('  </body>\n') ('</html>\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOT
                  was_filled: True
                  spids: [39]
                )
              ]
            )
          ]
          spids: [23]
        )
      spids: [18 22]
    )
    (Sentence child:(C {(get)} {(DQ (/ps))} {(ps_handler)}) terminator:<Op_Semi ';'>)
    (FuncDef
      name: ps_handler
      body: 
        (BraceGroup
          children: [(C {(header)} {(DQ (Content-Type))} {(DQ (text/plain))}) (C {(ps)})]
          spids: [93]
        )
      spids: [88 92]
    )
    (Sentence
      child: (C {(get)} {(DQ (/DeanMartin.jpg))} {(dean_handler)})
      terminator: <Op_Semi ';'>
    )
    (FuncDef
      name: dean_handler
      body: 
        (BraceGroup
          children: [
            (C {(header)} {(DQ (Content-Type))} {(DQ (image/jpeg))})
            (C {(cat)} {(DQ (DeanMartin.jpg))})
          ]
          spids: [126]
        )
      spids: [121 125]
    )
    (Sentence child:(C {(get)} {(DQ (/redirect))} {(redirect_handler)}) terminator:<Op_Semi ';'>)
    (FuncDef
      name: redirect_handler
      body: 
        (BraceGroup
          children: [
            (C {(status)} {(302)})
            (C {(header)} {(DQ (Location))} {(DQ ('http://jackjs.org/'))})
          ]
          spids: [163]
        )
      spids: [158 162]
    )
    (C {(martin)} {($ VSub_Name '$PORT')})
  ]
)