|%
++  static                                              :: freeze .mdh hoon subset
  |=  gen=hoon  ^-  [inf=(map term dime) elm=manx]
  ?+    -.gen
      =/  gen  ~(open ap gen)
      ?:  =(gen ^gen)  ~|([%cram-dynamic -.gen] !!)
      $(gen gen)
  ::
    %xray  [~ (single (shut gen))]
    ^     [(malt (frontmatter p.gen)) (single (shut q.gen))]
  ==
::
++  single                                              :: unwrap one-elem marl
  |=  xml=marl  ^-  manx
  ?:  ?=([* ~] xml)  i.xml
  ~|(%many-elems !!)
::
++  shut-mart                                           :: xml attrs
  |=([n=mane v=(list beer:hoot)] [n (turn v |=(a=beer:hoot ?^(a !! a)))])
::
++  shut                                                :: as xml constant
  |=  gen=hoon  ^-  marl
  ?+    -.gen  ~|([%bad-xml -.gen] !!)
      %dbug  $(gen q.gen)
  ::
      %xray
    [[n.g.p.gen (turn a.g.p.gen shut-mart)] $(gen [%mcts c.p.gen])]~
  ::
      %mcts
    ?~  p.gen  ~
    =-  (weld - $(p.gen t.p.gen))
    ?^  -.i.p.gen  $(gen [%xray i.p.gen])
    ~|  [%shut-tuna -.i.p.gen]
    ?+  -.i.p.gen  !!
      %manx  ?>(?=(%xray -.p.i.p.gen) $(gen p.i.p.gen))
      %marl  ?>(?=(%mcts -.p.i.p.gen) $(gen p.i.p.gen))
    ==
  ==
::
::
++  frontmatter                                         :: parse ~[[%foo 1] [%bar ~s2]]
  |=  gen=hoon  ^-  (list [term dime])
  ?:  ?=([%bust %null] gen)  ~
  ?:  ?=(%dbug -.gen)  $(gen q.gen)
  ?.  ?=(%clsg -.gen)  ~|([%bad-frontmatter -.gen] !!)
  %+  turn  p.gen
  |=  gen=hoon
  ?.  ?=(^ -.gen)
    =/  gen  ~(open ap gen)
    ?:  =(gen ^gen)  ~|([%bad-frontmatter-elem -.gen] !!)
    $(gen gen)
  =/  hed  (as-dime p.gen)
  ?.  =(%tas p.hed)  ~|([%bad-frontmatter-key-type p.hed] !!)
  [q.hed (as-dime q.gen)]
::
++  as-dime                                            :: %foo ~.foo 0vbar etc
  |=  gen=hoon  ^-  dime
  ?:  ?=(%dbug -.gen)  $(gen q.gen)
  ?.  ?=([?(%rock %sand) @ @] gen)  ~|([%bad-literal gen] !!)
  +.gen
--