def METHOD_NAME(self, artifact_path, dst_path=None):
    """
    Download an artifact file or directory to a local directory if applicable, and return a
    local path for it.
    The caller is responsible for managing the lifecycle of the downloaded artifacts.
    :param artifact_path: Relative source path to the desired artifacts.
    :param dst_path: Absolute path of the local filesystem destination directory to which to
                     download the specified artifacts. This directory must already exist.
                     If unspecified, the artifacts will either be downloaded to a new
                     uniquely-named directory on the local filesystem or will be returned
                     directly in the case of the LocalArtifactRepository.
    :return: Absolute path of the local filesystem location containing the desired artifacts.
    """
    from mlflow.exceptions import MlflowException
    from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE, RESOURCE_DOES_NOT_EXIST
    if dst_path is None:
        dst_path = tempfile.mkdtemp()
    dst_path = Path(dst_path).absolute()
    if not dst_path.exists():
        raise MlflowException(
            message=("The destination path for downloaded artifacts does not"
                     " exist! Destination path: {dst_path}".format(dst_path=dst_path)),
            error_code=RESOURCE_DOES_NOT_EXIST,
        )
    elif not dst_path.is_dir():
        raise MlflowException(
            message=("The destination path for downloaded artifacts must be a directory!"
                     " Destination path: {dst_path}".format(dst_path=dst_path)),
            error_code=INVALID_PARAMETER_VALUE,
        )
    for path in self.list_artifacts(artifact_path):
        local_path = dst_path / path
        local_path.parent.mkdir(exist_ok=True)
        self._download_file(artifact_path / path, local_path)
    return dst_path