public static CanonicMultiStageLayouter createIncrementalHierarchicalLayouter(
      final boolean orthogonalEdgeRooting,
      final long minLayerDist,
      final long minNodeDist,
      final HierarchicOrientation orientation) {
    final IncrementalHierarchicLayouter layouter = new IncrementalHierarchicLayouter();

    if (HierarchicOrientation.HORIZONTAL.equals(orientation)) {
      // OrientationLayouter.TOP_TO_BOTTOM is the default
      ((OrientationLayouter) layouter.getOrientationLayouter())
          .setOrientation(OrientationLayouter.LEFT_TO_RIGHT);
    }

    layouter.setMinimumLayerDistance(minLayerDist);
    layouter.setNodeToNodeDistance(minNodeDist);
    layouter.setEdgeToEdgeDistance(25);
    layouter.setNodeToEdgeDistance(25);

    layouter.setBackloopRoutingEnabled(true);
    layouter.setSelfLoopLayouterEnabled(true);
    layouter.setOrthogonallyRouted(orthogonalEdgeRooting);

    return layouter;
  }
Creates graph layouter objects that are used to layout ZyGraphs.
java/zylib/src/main/java/com/google/security/zynamics/zylib/yfileswrap/gui/zygraph/layouters/ZyGraphLayouter.java