<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def roll(self, shifts=None, **shifts_kwargs):
 """ Return a new Variable with rolld data. Parameters shifts : mapping of the form {dim: offset} Integer offset to roll along each of the given dimensions. Positive offsets roll to the right; negative offsets roll to the left. **shifts_kwargs: The keyword arguments form of ``shifts``. One of shifts or shifts_kwarg must be provided. Returns ------- shifted : Variable Variable with the same dimensions and attributes but rolled data. """

        shifts = either_dict_or_kwargs(shifts, shifts_kwargs, 'roll')

        result = self
        for dim, count in shifts.items():
            result = result._roll_one_dim(dim, count)
        return result