def replace(self, **kwargs):
        """
        Return: a new :class:`AssetLocation` with specific ``kwargs`` replacing
            their corresponding values.

        Using AssetLocator's replace function results in a mismatch of __init__ args and kwargs.
            Replace tries to instantiate an AssetLocation object with AssetLocators args and kwargs.
        """
        # NOTE: Deprecation value is hard coded as True in __init__ and therefore does not need to be passed through.
        return AssetLocation(
            kwargs.pop('org', self.org),
            kwargs.pop('course', self.course),
            kwargs.pop('run', self.run),
            kwargs.pop('category', self.block_type),
            kwargs.pop('name', self.block_id),
            revision=kwargs.pop('revision', self.branch),
            **kwargs
        )
Return: a new :class:`AssetLocation` with specific ``kwargs`` replacing
            their corresponding values.

        Using AssetLocator's replace function results in a mismatch of __init__ args and kwargs.
            Replace tries to instantiate an AssetLocation object with AssetLocators args and kwargs.