question: public void visit ( CellVisitor visitor , mxGraphHierarchyNode [ ] dfsRoots , boolean trackAncestors , Set < mxGraphHierarchyNode > seenNodes ) { if ( dfsRoots != null ) { for ( int i = 0 ; i < dfsRoots . length ; i ++ ) { mxGraphHierarchyNode internalNode = dfsRoots [ i ] ; if ( internalNode != null ) { if ( seenNodes == null ) { seenNodes = new HashSet < mxGraphHierarchyNode > ( ) ; } if ( trackAncestors ) { internalNode . hashCode = new int [ 2 ] ; internalNode . hashCode [ 0 ] = dfsCount ; internalNode . hashCode [ 1 ] = i ; dfs ( null , internalNode , null , visitor , seenNodes , internalNode . hashCode , i , 0 ) ; } else { dfs ( null , internalNode , null , visitor , seenNodes , 0 ) ; } } } dfsCount ++ ; } }
target:  A depth first search through the internal hierarchy model