import java.util.*;

public class Traveller
{
    public Traveller (Maze maze, boolean debug)
    {
        _theMaze = maze;
        _debug = debug;
    }

    public int findAllKeys (List<String> inputs)
    {
        Vector<Wormhole> outerWormholes = _theMaze.outerWormholes();
        Vector<Wormhole> innerWormholes = _theMaze.innerWormholes();
        Wormhole start = Util.findWormhole(outerWormholes, Maze.START);
        Wormhole end = Util.findWormhole(outerWormholes, Maze.END);
        
        return -1;
    }

    private HashMap<Coordinate, List<Route>> findRoutes (Vector<Wormhole> outerWormholes, Vector<Wormhole> innerWormholes)
    {
        HashMap<Coordinate, List<Route>> routesForEachCoordinate = new HashMap<Coordinate, List<Route>>();
        Set<Wormhole> outerSet = new HashSet<Wormhole>(outerWormholes);
        Iterator<Wormhole> iter = outerSet.iterator();

        while (iter.hasNext())
        {
            Wormhole toCheck = iter.next();
            int index = innerWormholes.indexOf(toCheck);

            if (index != -1)
            {
                Coordinate innerLocation = innerWormholes.elementAt(index).getLocation();
                List<Route> outerRoutes = routesForEachCoordinate.computeIfAbsent(toCheck.getLocation(), (k) -> new ArrayList<>());

                outerRoutes.add(new Route(toCheck.getLocation(), innerLocation));

                List<Route> innerRoutes = routesForEachCoordinate.computeIfAbsent(innerLocation, (k) -> new ArrayList<>());

                innerRoutes.add(new Route(innerLocation, toCheck.getLocation()));
            }
        }

        return routesForEachCoordinate;
    }

    private Maze _theMaze;
    private boolean _debug;
}
@@ -12,16 +12,43 @@
 .util.*;
+%0Aimport java.util.stream.*;
 %0A%0Apublic
@@ -1635,47 +1635,837 @@
   %7D%0A
-%0A        return routesForEachCoordinate
+        %0A        Vector%3CCoordinate%3E outerCoordinates = Util.extractCoordinates(outerWormholes);%0A        Vector%3CCoordinate%3E innerCoordinates = Util.extractCoordinates(innerWormholes);%0A        Vector%3CCoordinate%3E theCollection = new Vector%3CCoordinate%3E();%0A%0A        theCollection.addAll(outerCoordinates);%0A        theCollection.addAll(innerCoordinates);%0A%0A        Enumeration%3CCoordinate%3E theIter = theCollection.elements();%0A%0A        while (theIter.hasMoreElements())%0A        %7B%0A            Coordinate coord = theIter.nextElement();%0A%0A            routesForEachCoordinate.computeIfAbsent(coord, (k) -%3E new ArrayList%3C%3E()).addAll(findAllPaths(coord, theCollection));%0A        %7D%0A%0A        return routesForEachCoordinate;%0A    %7D%0A%0A    private List%3CRoute%3E findAllPaths (Coordinate start, Iterable%3CCoordinate%3E allLocations)%0A    %7B%0A        return null
 ;%0A  

Update Traveller.java