digraph dependencies {
        newrank=true;

	n0 [label="wasmer", color=orange];
	n1 [label="wasmer-compiler", color=orange];
	n5 [label="wasmer-engine", color=orange];
	n6 [label="wasmer-engine-universal", color=orange];
	n7 [label="wasmer-engine-dylib", color=orange];
	n8 [label="wasmer-types", color=orange];
	n9 [label="wasmer-vm", color=orange];
	n10 [label="wasmer-c-api", color=orange];
	n11 [label="wasmer-emscripten", color=orange];
	n12 [label="wasmer-wasi", color=orange];
	n13 [label="wasmer-cache", color=orange];
	n14 [label="wasmer-cli", color=orange];

        
	subgraph cluster_compiler {
		label="Compilers";
		color=brown;

		n2 [label="wasmer-compiler-cranelift", color=orange];
		n3 [label="wasmer-compiler-llvm", color=orange];
		n4 [label="wasmer-compiler-singlepass", color=orange];
	}

	subgraph cluster_engine {
		label="Engines";
		color=brown;

		n6 [label="wasmer-engine-universal", color=orange];
		n7 [label="wasmer-engine-dylib", color=orange];
	}

        {
        rank=same;
        n2;
        n3;
        n4;
        n6;
        n7;
        }
        

	subgraph cluster_abi {
		label="Provided ABIs";
		color=brown;

		n12 [label="wasmer-wasi", color=orange];
		n11 [label="wasmer-emscripten", color=orange];
	}

	n14 -> n13 [color=orange, style=dashed];
	n14 -> n12 [color=orange, style=dashed];
	n14 -> n11 [color=orange, style=dashed];
	n13 -> n0 [color=orange, style=dashed];
	n10 -> n11 [color=orange, style=dashed];
	n10 -> n12 [color=orange, style=dashed];
	n11 -> n0 [color=orange, style=dashed];
	n12 -> n0 [color=orange, style=dashed];
	n0 -> n2 [color=orange, style=dashed];
	n0 -> n3 [color=orange, style=dashed];
	n0 -> n4 [color=orange, style=dashed];
	n0 -> n6 [color=orange, style=dashed];
	n0 -> n7 [color=orange, style=dashed];
	n2 -> n1 [color=orange, style=dashed];
	n3 -> n1 [color=orange, style=dashed];
	n4 -> n1 [color=orange, style=dashed];
	n6 -> n5 [color=orange, style=dashed];
	n7 -> n5 [color=orange, style=dashed];
	n5 -> n1 [color=orange, style=dashed];
	n1 -> n9 [color=orange, style=dashed];
	n9 -> n8 [color=orange, style=dashed];
}
