// Now that movement is complete, update the stored Location to the new
// Location, unless the incoming Location specified an axis with a value
// of NaN. NaN is interpreted to mean "Don't move this axis" so we don't
// update the value, either.
hl = hl.derive(
Double.isNaN(location.getX()) ? null : location.getX(),
Double.isNaN(location.getY()) ? null : location.getY(),
Double.isNaN(location.getZ()) ? null : location.getZ(),
Double.isNaN(location.getRotation()) ? null : location.getRotation());