private LayoutAlgorithm.Builder<V, ?, ?> doGetLayout(String name) {
		switch (name) {
			case COMPACT_HIERARCHICAL:
				return TidierTreeLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator);
			case HIERACHICAL:
				return EdgeAwareTreeLayoutAlgorithm
						.<V, E> edgeAwareBuilder();
			case MIN_CROSS_TOP_DOWN:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.layering(Layering.TOP_DOWN)
						.threaded(false);
			case MIN_CROSS_LONGEST_PATH:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.layering(Layering.LONGEST_PATH)
						.threaded(false);
			case MIN_CROSS_NETWORK_SIMPLEX:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.layering(Layering.NETWORK_SIMPLEX)
						.threaded(false);
			case MIN_CROSS_COFFMAN_GRAHAM:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.layering(Layering.COFFMAN_GRAHAM)
						.threaded(false);
			case VERT_MIN_CROSS_TOP_DOWN:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.favoredEdgePredicate(favoredEdgePredicate)
						.layering(Layering.TOP_DOWN)
						.threaded(false);
			case VERT_MIN_CROSS_LONGEST_PATH:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.favoredEdgePredicate(favoredEdgePredicate)
						.layering(Layering.LONGEST_PATH)
						.threaded(false);
			case VERT_MIN_CROSS_NETWORK_SIMPLEX:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.favoredEdgePredicate(favoredEdgePredicate)
						.layering(Layering.NETWORK_SIMPLEX)
						.threaded(false);
			case VERT_MIN_CROSS_COFFMAN_GRAHAM:
				return EiglspergerLayoutAlgorithm
						.<V, E> edgeAwareBuilder()
						.edgeComparator(edgeTypeComparator)
						.favoredEdgePredicate(favoredEdgePredicate)
						.layering(Layering.COFFMAN_GRAHAM)
						.threaded(false);
			default:
				Msg.error(this, "Unknown graph layout type: '" + name + "'");
				return null;
		}
	}
A class that supplies Jung graph layouts to the Function Graph API.

@param <V> the vertex type
@param <E> the edge type
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/jungrapht/JgtLayoutFactory.java