private void horizontalCompactionLeft(Digraph<BrandesKoepfNode,Boolean> graph) {
		for (BrandesKoepfNode v : graph.vertices()) {
			v.sink = v;
			v.sink2 = v;
			v.shift = Integer.MAX_VALUE;
			v.x = Integer.MIN_VALUE; // undefined
		}
		for (BrandesKoepfNode v : graph.vertices()) {
			if (v.root == v) {
				placeBlockLeft(v);
			}
		}
		for (BrandesKoepfNode v : graph.vertices()) {
			if (v.root == v) {
				BrandesKoepfNode sink = v.sink;
				do {
					if (sink.shift < Integer.MAX_VALUE) {
						v.x += sink.shift;
					}
					sink = sink.sink2;
				} while (sink.sink2 != sink);
			}
		}
		for (BrandesKoepfNode v : graph.vertices()) {
			v.x = v.root.x;
		}
	}