struct RenderingDomContent
{
    var hitTestResult: WindowHitTestResult?;
    var cursor: WindowSystemCursorType?;
    var element: int?;
    var bounds: Rect;
    var validArea: Rect;
}

class RenderingDom
{
    var id: int;
    var content: RenderingDomContent;
    var children: RenderingDom[];
}

enum RenderingDom_DiffType
{
    Deleted,
    Created,
    Modified,
}

struct RenderingDom_Diff
{
    var id: int;
    var diffType: RenderingDom_DiffType;
    var content: RenderingDomContent?;
    var children: int[];
}

struct RenderingDom_DiffsInOrder
{
    var diffsInOrder: RenderingDom_Diff[];
}


message RendererRenderDom                      { request: RenderingDom; }
message RendererRenderDomDiff                  { request: RenderingDom_DiffsInOrder; }