How does Manipulate work “under the hood”, i.e. gets converted into DynamicModule and Dynamic?

The Mathematica documentation says in Introduction to Dynamic under “Dynamic and Other Functions”:

Manipulate in fact produces a combination of Dynamic, controls, and formatting constructs, not fundamentally different from what you can do yourself using these lower-level functions.

And in Advanced Dynamic Functionality under “Nested Dynamics” it says:

the output of Manipulate consists of a highly complex set of interrelated and nested Dynamic expressions

From other places (e.g. the documentation for Panel under “Properties & Relations” states “The Manipulate construct uses Panel“), I gather that

Manipulate(x + y, {x, 0, 9, 1}, {y, 0, 90, 10})

works and looks a bit like

DynamicModule({x, y},
 Panel(Column({
    Grid({{"x", Manipulator(Dynamic(x), {0, 9, 1})},
      {"y", Manipulator(Dynamic(y), {0, 90, 10})}
      }),
    Pane(
     Framed(Style(Dynamic(x + y), "Output"), FrameMargins -> 15, 
      Background -> White, FrameStyle -> LightGray))
    })
  )
 )
  • What code gets really generated for a Manipulate expression?
  • Where (in the documentation, or elsewhere) can I find that?
  • Can I somehow see or obtain the code generated for a specific Manipulate inside Mathematica?