/** {@inheritDoc} */
 @Override
 public void getCoordRange(Vector3f min, Vector3f max) {
   for (ClientPathNode node : pathNodes) {
     if (min != null) {
       min.x = Math.min(min.x, node.getPosition().x);
       min.y = Math.min(min.y, node.getPosition().y);
       min.z = Math.min(min.z, node.getPosition().z);
     }
     if (max != null) {
       max.x = Math.max(max.x, node.getPosition().x);
       max.y = Math.max(max.y, node.getPosition().y);
       max.z = Math.max(max.z, node.getPosition().z);
     }
   }
 }
 /**
  * Set the IndexedPathNode position.
  *
  * @param index The index of the PathNode for which to set the position.
  * @param x The new X position of the PathNode.
  * @param y The new Y position of the PathNode.
  * @param z The new Z position of the PathNode.
  * @throws IndexOutOfBoundsException If the specified index of the PathNode to be updated was
  *     outside the valid range.
  */
 @Override
 public void setNodePosition(int index, float x, float y, float z)
     throws IndexOutOfBoundsException {
   synchronized (pathNodes) {
     if (index >= 0 && index < pathNodes.size()) {
       ClientPathNode node = pathNodes.get(index);
       node.getPosition().set(x, y, z);
       // Not working properly yet
       // parent.updateNodeUI(index, true);
       // Update the whole path as a temporary measure.
       parent.updatePathUI();
     } else {
       throw new IndexOutOfBoundsException(
           "The index of the PathNode to have its position updated was outside the valid range!");
     }
   }
 }