<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def extend(self, *keys, **kwargs):
 """ Return a new enumeration object extended with the specified items. """

        this = copy.deepcopy(self)

        value_type = kwargs.get('value_type', EnumValue)

        if not keys:
            raise EnumEmptyError()

        keys = tuple(keys)
        values = [None] * len(keys)

        for i, key in enumerate(keys):
            value = value_type(this, i, key)
            values[i] = value
            try:
                super(Enum, this).__setattr__(key, value)
            except TypeError:
                raise EnumBadKeyError(key)

        this.__dict__['_keys'] = this.__dict__['_keys'] + keys
        this.__dict__['_values'] += values

        return this