public static Object[] getWFIPath(mxAnalysisGraph aGraph, ArrayList<Object[][]> FWIresult, Object startVertex, Object targetVertex)
			throws StructuralException
	{
		Object[][] dist = FWIresult.get(0);
		Object[][] paths = FWIresult.get(1);
		ArrayList<Object> result = null;

		if (aGraph == null || paths == null || startVertex == null || targetVertex == null)
		{
			throw new IllegalArgumentException();
		}

		for (int i = 0; i < dist[0].length; i++)
		{
			if ((Double) dist[i][i] < 0)
			{
				throw new StructuralException("The graph has negative cycles");
			}
		}

		if (startVertex != targetVertex)
		{
			mxCostFunction cf = aGraph.getGenerator().getCostFunction();
			mxGraphView view = aGraph.getGraph().getView();
			ArrayList<Object> currPath = new ArrayList<Object>();
			currPath.add(startVertex);

			while (startVertex != targetVertex)
			{
				result = getWFIPathRec(aGraph, paths, startVertex, targetVertex, currPath, cf, view);
				startVertex = result.get(result.size() - 1);
			}
		}

		if (result == null)
		{
			result = new ArrayList<Object>();
		}

		return result.toArray();
	};