1digraph { 2 compound=true 3 fontname="Inconsolata, Consolas" 4 fontsize=10 5 margin="0,0" 6 ranksep=0.2 7 penwidth=0.5 8 9 node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] 10 edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] 11 12 { 13 node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray] 14 srcjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|0|\}"] 15 dstjson [label="\{|\"|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|1|\}"] 16 } 17 18 { 19 node [shape="box", style="filled", fillcolor="gray95"] 20 Document2 [label="(Modified) Document"] 21 Writer 22 } 23 24 subgraph cluster1 { 25 margin="10,10" 26 labeljust="left" 27 label = "Document" 28 style=filled 29 fillcolor=gray95 30 node [shape=Mrecord, style=filled, colorscheme=spectral7] 31 32 root [label="{object|}", fillcolor=3] 33 34 { 35 project [label="{string|\"project\"}", fillcolor=5] 36 rapidjson [label="{string|\"rapidjson\"}", fillcolor=5] 37 stars [label="{string|\"stars\"}", fillcolor=5] 38 ten [label="{number|10}", fillcolor=6] 39 } 40 41 edge [arrowhead=vee] 42 root -> { project; stars } 43 44 edge [arrowhead="none"] 45 project -> rapidjson 46 stars -> ten 47 } 48 49 srcjson -> root [label=" Parse()", lhead="cluster1"] 50 51 ten -> Document2 [label=" Increase \"stars\"", ltail="cluster1" ] 52 Document2 -> Writer [label=" Traverse DOM by Accept()"] 53 Writer -> dstjson [label=" Output to StringBuffer"] 54}