public List<List<GraphComponent>> findGraphPaths() {
		
		List<GraphNode> allGraphNodeList = _graphFragment.listAllNodes();
		
		if ((allGraphNodeList != null) && (allGraphNodeList.size() > 0)) {
			
			/* Go through each node looking for out-bound relationships that haven't been visited yet.
			 * Trying to use as few paths as possible to describe the graph. */
			for (GraphNode graphNode : allGraphNodeList) {
				
				//System.out.println("findGraphPaths - processing node: " + graphNode);
				
				List<GraphRelationship> outboundRelationList = _graphFragment.findFromRelationshipsForNode(graphNode);
				if (outboundRelationList.size() > 0) {
					int outboundRelCount = 0;
					while (outboundRelCount < outboundRelationList.size()) {
						
						List<GraphComponent> pathList = new Vector<GraphComponent>();				
						visit(null, graphNode, pathList);
						
						if (pathList.size() > 0) {
							_graphPathList.add(pathList);
						}
						
						outboundRelCount++;
					}
					// end has outbound relationship if	
				}  else {
					if (_graphFragment.findToRelationshipsForNode(graphNode).size() == 0) {	// there are no from or to relationships for this node
						List<GraphComponent> pathList = new Vector<GraphComponent>();				
						visit(null, graphNode, pathList);
						
						if (pathList.size() > 0) {
							_graphPathList.add(pathList);
						}						
					}
				}
			}
			
		}
		
		return _graphPathList;
	}