private static void dfsRec(mxAnalysisGraph aGraph, Object cell, Object edge, Set<Object> seen, mxICellVisitor visitor)
	{
		if (cell != null)
		{
			if (!seen.contains(cell))
			{
				visitor.visit(cell, edge);
				seen.add(cell);

				final Object[] edges = aGraph.getEdges(cell, null, false, true);
				final Object[] opposites = aGraph.getOpposites(edges, cell);

				for (int i = 0; i < opposites.length; i++)
				{
					dfsRec(aGraph, opposites[i], edges[i], seen, visitor);
				}
			}
		}
	}