docs: 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)