<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def put(self, *args, **kwargs) -> 'SharedCache': """ Adds one or more variables to the cache. :param args: Variables can be specified by two consecutive arguments where the first argument is a key and the second one the corresponding value. For example: ``` put('a', 1, 'b', False) ``` would add two variables to the cache where the value of _a_ would be 1 and the value of _b_ would be False. :param kwargs: Keyword arguments to be added to the cache, which are name value pairs like standard keyword named arguments in Python. For example: ``` put(a=1, b=False) ``` would add two variables to the cache where the value of _a_ would be 1 and the value of _b_ would be False. """


        environ.abort_thread()

        index = 0
        while index < (len(args) - 1):
            key = args[index]
            value = args[index + 1]
            self._shared_cache_data[key] = value
            index += 2

        for key, value in kwargs.items():
            if value is None and key in self._shared_cache_data:
                del self._shared_cache_data[key]
            else:
                self._shared_cache_data[key] = value

        return self