question: public void run ( mxGraph graph , Object parent , HashMap < Object , Set < Object > > rootsAndChildren ) { double initialX = 0 ; for ( Object r : rootsAndChildren . keySet ( ) ) { Set < Object > vertexSet = rootsAndChildren . get ( r ) ; for ( Object rc : vertexSet ) { if ( ! graph . isSwimlane ( rc ) ) { graph . updateCellSize ( rc , true ) ; } } } for ( Object r : rootsAndChildren . keySet ( ) ) { Set < Object > vertexSet = rootsAndChildren . get ( r ) ; ArrayList < Object > rootsList = new ArrayList < Object > ( ) ; rootsList . add ( r ) ; model = new mxGraphHierarchyModel ( this , vertexSet . toArray ( ) , rootsList , parent , false , deterministic , layoutFromSinks ) ; cycleStage ( parent ) ; layeringStage ( ) ; crossingStage ( parent ) ; initialX = placementStage ( initialX , parent ) ; } }
target:  The API method used to exercise the layout upon the graph description and produce a separate description of the vertex position and edge routing changes made.