def METHOD_NAME(self):
    if not self.outputs["data"].is_linked:
        return
    data = self.inputs['data'].sv_get(deepcopy=False)
    number = self.inputs["shift"].sv_get(deepcopy=False)[0][0]
    if self.selected_mode == 'np':
        dat = np.array(data)
        # levelsOfList replacement:
        depth = dat.ndim #len(np.shape(dat))-1
        # roll with enclose (we need case of declose and vectorization)
        if isinstance(data[0], np.ndarray):
            output = [o for o in np.roll(dat, number, axis=min(self.level, depth))]
        else:
            output = np.roll(dat, number, axis=min(self.level, depth)).tolist()
    elif self.selected_mode == 'py':
        output = []
        if self.level == 0:
            d = deque(data)
            d.rotate(number)
            output = list(d)
        elif self.level == 1:
            for sublist in data:
                d = deque(sublist)
                d.rotate(number)
                output.append(list(d))
        elif self.level > 1:
            # likely vectors or polygons... so going with list .
            for sublist in data:
                sub_output = []
                for subsublist in sublist:
                    d = deque(subsublist)
                    d.rotate(number)
                    sub_output.append(list(d))
                output.append(sub_output)
    self.outputs['data'].sv_set(output)