public void nextFlight(ArrayList<Flight> currentPath, ArrayList<String> visited, String fromDest, String toDest) {
        
        Flight recentFlight = currentPath.get(currentPath.size() - 1);
        
        // Are we at our destination?
        if (recentFlight.getToDest().equals(toDest)) {

            // This is a valid flight path
            
            // Make a copy of the path and add it to the list of valid paths
            ArrayList<Flight> goodPath = new ArrayList<Flight>();
            for(Flight copyFlight : currentPath) {
                goodPath.add(copyFlight);
            }
            flightPaths.add(new FlightPath(goodPath));
            
        } else {
        
            for(Flight flight : allFlights) {
            
                // Is the fromDest of the flight connected to the toDest of the previous flight?
                if (recentFlight.getToDest().equals(flight.getFromDest())) {
                    
                    // Is the flight not going somewhere we have already been?
                    if (!visited.contains(flight.getToDest())) {
                        
                        // Is the flight not too long after the previous flight
                        if (flight.getFromDate().getDay() <= (recentFlight.getFromDate().getDay() + 1)) {
                            
                            // Is the flight not before the previous flight
                            if (flight.getFromDate().getDay() >= recentFlight.getFromDate().getDay()) {
                                
                                // This is a valid partial path
                                
                                // Recurse to continue building the path
                                currentPath.add(flight);
                                visited.add(flight.getToDest());
                    
                                nextFlight(currentPath, visited, fromDest, toDest);
                    
                                currentPath.remove(currentPath.size() - 1);
                                visited.remove(visited.size() - 1);
                                
                            }
                        }
                    }
                    
                }
            
            }
        }
        
    }