@Override
        public void removeNode(Node node) {

                // Check to see if the Node is contained in the NodeMap
                if (!nodeMap.containsValue(node)) {
                        // If it is not contained then throw an error for trying
                        // to remove a nonexistent node
                        throw new IllegalStateException("Tried to remove a nonexistent node.  Remember that Nodes are defined by their coordinates.");
                }

                // For each edge stored in the node, remove that edge from
                // everywhere it is stored
                for (Edge edge : nodeMap.get(node.getCoordinates()).getAdjacent()) {
                        removeEdge(edge);
                }

                // Remove the node
                nodeMap.remove(node.getCoordinates());

        }