digraph target{
	rankdir=LR
	subgraph cluster_0 {
		label="symbol in the\nconcrete model"
		shape=box
		attr [label="symbol attributes" shape=plain]
		term [label="terminal in the\nconcrete model" shape=box]
	}
	std_devmap1 [label="engine plugin:\nstd_devmap\n(applying devmap)"]
	std_devmap2 [label="engine plugin:\nstd_devmap\n(applying portmap)"]
	target_pcb [label="engine plugin:\ntarget_pcb"]
	abstract1 [label="port in the\nabstract model\n(model version 1)" shape="box"]
	abstract2 [label="port in the\nabstract model\n(model version 2)" shape="box"]
	abstract3 [label="port in the\nabstract model\n(model version 3)" shape="box"]

	term -> abstract1 [style=dashed]
	attr -> std_devmap1 [label="devmap"]
	std_devmap1 -> abstract1 [label="component's\nportmap[]"]
	abstract1 -> std_devmap2 [label="component's\nportmap[]"]
	std_devmap2 -> abstract2 [label="port's\npcb/pinnum"]
	abstract2 -> target_pcb [label="port's\npcb/pinnum"]
	target_pcb -> abstract3 [label="display/name"]
}
