<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_coord_cell_node_coord(self, coord, coords=None, nans=None, var=None):
 """ Get the boundaries of an unstructed coordinate Parameters coord: xr.Variable The coordinate whose bounds should be returned %(CFDecoder.get_cell_node_coord.parameters.no_var|axis)s Returns ------- %(CFDecoder.get_cell_node_coord.returns)s """

        bounds = coord.attrs.get('bounds')
        if bounds is not None:
            bounds = self.ds.coords.get(bounds)
        if bounds is not None:
            if coords is not None:
                bounds = bounds.sel(**{
                    key: coords[key]
                    for key in set(coords).intersection(bounds.dims)})
            if nans is not None and var is None:
                raise ValueError("Need the variable to deal with NaN!")
            elif nans is None:
                pass
            elif nans == 'skip':
                bounds = bounds[~np.isnan(var.values)]
            elif nans == 'only':
                bounds = bounds[np.isnan(var.values)]
            else:
                raise ValueError(
                    "`nans` must be either None, 'skip', or 'only'! "
                    "Not {0}!".format(str(nans)))
            return bounds