def METHOD_NAME(self, mem: memoryview, slicing: OffsetsSizes) -> np.ndarray:
    """
    Convert a memoryview of the file's data into an ndarray, cutting away
    frame headers and footers as defined by `start` and `stop` parameters.
    Parameters
    ----------
    mem
        The input memoryview
    start
        Cut off frame headers of this size; usually start = frame_header_bytes // itemsize
    stop
        End index; usually stop = start + prod(sig_shape)
    Returns
    -------
    np.ndarray
        The output array. Should have shape (num_frames, prod(sig_shape)) and native dtype
    """
    if slicing.skip_end > 0:
        mem = mem[slicing.file_offset:-slicing.skip_end]
    else:
        mem = mem[slicing.file_offset:]
    itemsize = np.dtype(self._native_dtype).itemsize
    assert len(mem) % itemsize == 0, \
        "len(mem) must fit the dtype"
    assert len(mem) // itemsize % self.num_frames == 0, \
        "len(mem) must fit the number of frames"
    assert len(mem) // itemsize // self.num_frames % (
        slicing.frame_size + (self._frame_header + self._frame_footer) // itemsize
    ) == 0, "len(mem) must fit the sig shape"
    arr_uncut = np.frombuffer(mem, dtype=self._native_dtype).reshape(
        (self.num_frames, -1)
    )
    arr = arr_uncut[:, slicing.frame_offset:slicing.frame_offset + slicing.frame_size]
    assert arr.shape[1] == slicing.frame_size, \
        "array shape must fit the signal shape"
    assert arr.size > 0
    return arr