chromium/docs/accessibility/browser/figures/proxy_approach.gv

digraph graphname {
    graph [fontname = "helvetica", fontsize=11];
    node [shape="box", fontname = "helvetica", fontsize=11];
    edge [fontname = "helvetica", fontsize=11];
    rankdir="TB";

    subgraph cluster_browser {
        label = "Browser Process";

	subgraph cluster_proxy_tree {
		label = "Proxy accessibility tree";
		rankdir="TB";

		root_proxy [label="Root proxy"];
		root_proxy -> { button_proxy, other_proxy } [dir=none];
		button_proxy [label="Button proxy"];
		other_proxy [label="..."];
	}
    }

    subgraph cluster_render {
        label = "Render Process";

	subgraph cluster_ax_tree {
		label = "Accessibility tree";
		rankdir="TB";

		root_node [label="Root"];
		root_node -> { button_node, other_node } [dir=none];
		button_node [label="Button"];
		other_node [label="..."];
	}

	subgraph cluster_dom_tree {
		label = "DOM tree";
		rankdir="TB";

		root_dom_node [label="<body>"];
		root_dom_node -> { button_dom_node, other_dom_node } [dir=none];
		root_dom_node -> other_dom_node;
		button_dom_node [label="<button>"];
		other_dom_node [label="..."];
	}

    }

    os [label="Operating System"];
    os -> root_proxy [dir=both];
    root_proxy -> root_node [dir=both, label="Blocking IPC"];
    root_node -> root_dom_node [dir=both];
}