def METHOD_NAME(self, grid, prop, zsurf=None, sbuffer=1):
    """Private function for the Grid3D slicing."""
    grid._xtgformat1()
    if zsurf is not None:
        other = zsurf
    else:
        logger.info('The current surface is copied as "other"')
        other = self.copy()
    if not self.compare_topology(other, strict=False):
        raise RuntimeError("Topology of maps differ. Stop!")
    zslice = other.copy()
    nsurf = self.ncol * self.nrow
    p_prop = _gridprop_lowlevel.update_carray(prop, discrete=False)
    istat, updatedval = _cxtgeo.surf_slice_grd3d(
        self.ncol,
        self.nrow,
        self.xori,
        self.xinc,
        self.yori,
        self.yinc,
        self.rotation,
        self.yflip,
        zslice.get_values1d(),
        nsurf,
        grid.ncol,
        grid.nrow,
        grid.nlay,
        grid._coordsv,
        grid._zcornsv,
        grid._actnumsv,
        p_prop,
        sbuffer,
    )
    if istat != 0:
        logger.warning("Problem, ISTAT = %s", istat)
    self.set_values1d(updatedval)
    return istat