Before setting the new value, get the previous one to deindex it. Then
        call the command and index the new value, if exists

def _call_lset(self, command, index, value, *args, **kwargs):
        """
        Before setting the new value, get the previous one to deindex it. Then
        call the command and index the new value, if exists
        """
        if self.indexable:
            old_value = self.lindex(index)
            self.deindex([old_value])
        result = self._traverse_command(command, index, value, *args, **kwargs)
        if self.indexable:
            self.index([value])
        return result