<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register(self, newitems, *args, **kwargs):
 """ Register newitems in registry. :param newitems: New items to add to registry. When registering new items, keys are not allowed to override existing keys in the registry. :type newitems: mapping :param args: Positional arguments with meta data corresponding to order of meta names class attributes :param kwargs: Maps of corresponding meta for new keys. Each set of meta keys must be a subset of the new item keys. :raises: :exc:`~simkit.core.exceptions.DuplicateRegItemError`, :exc:`~simkit.core.exceptions.MismatchRegMetaKeysError` """

        newkeys = newitems.viewkeys()  # set of the new item keys
        if any(self.viewkeys() & newkeys):  # duplicates
            raise DuplicateRegItemError(self.viewkeys() & newkeys)
        self.update(newitems)  # register new item
        # update meta fields
        kwargs.update(zip(self.meta_names, args))
        for k, v in kwargs.iteritems():
            meta = getattr(self, k)  # get the meta attribute
            if v:
                if not v.viewkeys() <= newkeys:
                    raise MismatchRegMetaKeysError(newkeys - v.viewkeys())
                meta.update(v)