def METHOD_NAME(self, icol, jrow, klay):
    inputs = [icol, jrow, klay]
    ranges = [self.nrow, self.ncol, self.nlay]
    for inum, ixc in enumerate(inputs):
        if not isinstance(ixc, int):
            raise ValueError(f"Some input is not integer: {inputs}")
        if ixc > ranges[inum] / 2:
            raise ValueError(
                f"Input numbers <{inputs}> are too large compared to existing "
                f"ranges <{ranges}>"
            )
    # just simple numpy operations, and changing some cube props
    val = self.values.copy()
    val = val[::icol, ::jrow, ::klay]
    self._ncol = val.shape[0]
    self._nrow = val.shape[1]
    self._nlay = val.shape[2]
    self._xinc *= icol
    self._yinc *= jrow
    self._zinc *= klay
    self._ilines = self._ilines[::icol]
    self._xlines = self._xlines[::jrow]
    self._traceidcodes = self._traceidcodes[::icol, ::jrow]
    self.values = val