private void searchPaths(Graph graph, Object start, Object searched, ArrayList<Object> visited)
	{
		if(visited == null)
		{
			visited = new ArrayList<Object>();
			visited.add(start);
		}
		
		ArrayList<Object> nodes;
		
		if (visited.get(visited.size() - 1) instanceof Station) {
			nodes = ((Station)(visited.get(visited.size() - 1))).getChildNodes();
		}
		else
		{
			nodes = ((Semaphore)(visited.get(visited.size() - 1))).getChildNodes();
		}
		
		if(nodes == null)
		{
			nodes = new ArrayList<Object>();
		}
		
		for (Object node : nodes)
		{
			if(visited.contains(node)) {
				continue;
			}
			
			if(node.equals(searched))
			{
				visited.add(node);
				paths.add(setNewPath(visited));
				visited.remove(visited.size() - 1);
				break;
			}
		}
		
		for (Object node : nodes)
		{
			if(visited.contains(node) || node.equals(searched))
			{
				continue;
			}
			
			visited.add(node);
			searchPaths(graph, start, searched, visited);
			visited.remove(visited.size() - 1);
		}
	}