private List<N> searchConnections(N current, List<N> nodes, List<N> found) {
		List<WeightedEdge<N, W>> edges = edgesFrom(current);
		for(WeightedEdge<N, W> edge : edges) {
			if(nodes.contains(edge.to)) {
				nodes.remove(edge.to);
				found.add(edge.to);
				found = searchConnections(edge.to, nodes, found);
			}
		}
		edges = edgesTo(current);
		for(WeightedEdge<N, W> edge : edges) {
			if(nodes.contains(edge.from)) {
				nodes.remove(edge.from);
				found.add(edge.from);
				found = searchConnections(edge.from, nodes, found);
			}
		}
		return found;
	}