digraph {
	node [shape="box"];
	subgraph {
		node [shape=plaintext];

		ncsid [label=<
			<table>
				<tr><td port="sockio" bgcolor="lightblue">net::SockIO</td><td bgcolor="lightblue" colspan="2" port="config">net::ConfigBase</td></tr>
				<tr><td bgcolor="lightblue" colspan="3">ncsi::StateMachine</td></tr>
				<tr>
					<td bgcolor="black"><font color="white">L2 FSM</font></td>
					<td bgcolor="black"><font color="white">L3/4 FSM</font></td>
					<td bgcolor="black"><font color="white">Test FSM</font></td>
				</tr>
			</table>
		>];
	}

	subgraph notes {
		node [shape="note" style="filled"];
		core [label="NC-SId Core" fillcolor="lightblue"];
		ec [label="EC" fillcolor="black" fontcolor="white"];
		mock [label="Mocks" fillcolor="beige"];
	}

	p_config [label="MockConfig" style="filled" fillcolor="beige"];

	ncsi_sockio [style="filled" fillcolor="beige" label=<
		<table border="0">
			<tr><td align="left">NICConnection</td></tr>
			<tr><td border="1">mock::NIC</td></tr>
		</table>
	>];

	ncsi_sockio -> ncsid:sockio [arrowhead="diamond"];

	p_config -> ncsid:config [arrowhead="diamond"];
}