internal static LayeredLayoutEngine CalculateLayout(GeometryGraph msaglGraph, SugiyamaLayoutSettings settings, CancelToken cancelToken) {
            var engine = new LayeredLayoutEngine(msaglGraph, settings);
#if USE_PHYLOTREE
           PhyloTree phyloTree = msaglGraph as PhyloTree;
            if (phyloTree != null) {
                var pc=new PhyloTreeLayoutCalclulation(phyloTree, settings, engine.IntGraph, engine.Database);
                pc.Run();
            } else
#endif
                engine.Run(cancelToken);
            return engine;
        }
 /// <summary>
 /// Layered layout arranged the given graph on layers inferred from the directed edge structure
 /// </summary>
 /// <param name="geometryGraph">graph to be laid out</param>
 /// <param name="settings">The settings for the algorithm.</param>
 public LayeredLayout(GeometryGraph geometryGraph, SugiyamaLayoutSettings settings)
 {
     this.geometryGraph = geometryGraph;
     this.settings = settings;
     this.engine = new LayeredLayoutEngine(geometryGraph, settings);
 }