public AStarNode obtainOpenNodeWithLowestCost() {
		Iterator<Entry<Float, Vector<AStarNodeVector3D>>> entries = open.entrySet().iterator();
		if (!entries.hasNext())
			return null;
		Vector<AStarNodeVector3D> costEntry = entries.next().getValue();
		int lastCostEntry = costEntry.size() - 1;
		AStarNode lowestCostNode = costEntry.get(lastCostEntry);
		costEntry.remove(lastCostEntry);
		if (costEntry.size() == 0)
			entries.remove();
		removeOpen(lowestCostNode);
		return lowestCostNode;
	}