/**
  * Function for Dijkstra's algorithm. TODO:: describe this
  *
  * @param node The node to get the neighbors of.
  * @return A list of the neighbors of the given node.
  */
 private List<LotNode> getNeighbors(LotNode node) {
   List<LotNode> neighbors = new ArrayList<LotNode>();
   for (LotEdge edge : this.getGraph().getEdgeList(this.getEdgesToAvoid())) {
     try {
       if (this.getGraph().getNode(edge) == node && !isSettled(edge.getEndNode())) {
         neighbors.add(edge.getEndNode());
       }
     } catch (LotGraphException e) {
       e.printStackTrace();
       System.out.println("FATAL ERROR- this should not happen. Error: " + e.getMessage());
       System.exit(1);
     }
   }
   return neighbors;
 } // getNeighbors(LotNode)
  /**
   * Function for Dijktra's algorithm. TODO:: describe this
   *
   * @param node The starting node.
   * @param target The node we are trying to get to.
   * @return The distance from the first node to the second node.
   */
  private double getDistance(LotNode node, LotNode target) {
    for (LotEdge edge : this.getGraph().getEdgeList(this.getEdgesToAvoid())) {

      try {
        if (this.getGraph().getNode(edge) == node && edge.getEndNode().equals(target)) {
          return edge.getMetric();
        }
      } catch (LotGraphException e) {
        e.printStackTrace();
        System.out.println("FATAL ERROR- Should not happen. Error: " + e.getMessage());
        System.exit(1);
      }
    }
    throw new RuntimeException("Should not happen");
  } // getDistance(LotNode, LotNode)