@classmethod
def register_class(cls, register_cls, map_kwargs=None):
    """Add a route class to :attr:`_base_store`, appling mapping from
        :func:`get_register_class_map` where required. This route class will
        be instantiated (with kwargs from :func:`get_base_store_kwargs`)
        when the Router is itself instiated, using
        :func:`register_base_store`.

        :argument register_cls: Object to register (usually Route or
                                Router classes, but could be anything
                                because of possible mapping in
                                :func:`get_register_class_map_kwargs`)
        :argument map_kwargs: Argument to pass to mapping value if
                              entity gets transformed.
        :type map_kwargs: dict

        :returns: The registered class, transformed by class register
                  mappings if there was a matching mapping
        :rtype: class

        >>> from mock import Mock
        >>> mock_entity_instance = Mock()
        >>> mock_entity = Mock()
        >>> mock_entity.side_effect = [mock_entity_instance]
        >>> mock_mapping_func = Mock()
        >>> mock_mapping_func.side_effect = [mock_entity]
        >>>
        >>> class Class:
        ...  pass
        >>>
        >>> class Store(EntityStore):
        ...   @classmethod
        ...   def get_register_class_map(self):
        ...     return {Class: mock_mapping_func}
        >>>
        >>> Store.register_class(Class) is mock_entity
        True
        >>>
        >>> Store._base_store == [mock_entity]
        True
        >>>
        >>> store = Store()
        >>> store._store == [mock_entity_instance]
        True
        """
    register_class_map = cls.get_register_class_map()
    if register_class_map:
        if map_kwargs is None:
            map_kwargs = {}
        map_kwargs = dict(cls.get_register_class_map_kwargs(), **map_kwargs)
        register_cls = cls.register_apply_map(register_cls,
            register_class_map, map_kwargs)
    cls._base_store.append(register_cls)
    return register_cls
