private final AStarNode obtainOpenWithLowestCost() {
		Iterator<Entry<Float, Vector<AStarNode>>> entries = open.entrySet().iterator();
		if (!entries.hasNext())
			return null;
		Vector<AStarNode> costEntry = entries.next().getValue();
		int lastCostEntry = costEntry.size() - 1;
		AStarNode lowestCostNode = costEntry.get(lastCostEntry);
		costEntry.remove(lastCostEntry);
		if (costEntry.size() == 0)
			entries.remove();
		isOpen[(int)lowestCostNode.getLocation().getX()][(int)lowestCostNode.getLocation().getY()] = false;
		return lowestCostNode;
	}