def METHOD_NAME(self, path, operator):
    from nnabla.utils.data_source_loader import get_file_extension
    if self._default_backend:
        self._current_backend = self._default_backend
        return self._default_backend()
    else:
        ext = get_file_extension(path)
        if ext not in self._best_backend:
            self._best_backend[ext] = None
            self._best_backend_name[ext] = None
            for name, backend in self._subclasses.items():
                state = backend().accept(path, ext, operator)
                if state == "OK":
                    if self._best_backend[ext] is None:
                        self._best_backend_name[ext] = name
                        self._best_backend[ext] = backend()
                        self._best_backend[ext].next[ext] = None
                    else:
                        end = self._best_backend[ext]
                        while ext in end.next and end.next[ext] is not None:
                            end = self._best_backend[ext].next[ext]
                        end.next[ext] = backend()
                elif state == "Recommended":
                    self._best_backend_name[ext] = name
                    if self._best_backend[ext] is not None:
                        head = self._best_backend[ext]
                        self._best_backend[ext] = backend()
                        self._best_backend[ext].next[ext] = head
                    else:
                        self._best_backend[ext] = backend()
        if self._best_backend[ext]:
            self._current_backend = self._best_backend[ext].__class__
            return self._best_backend[ext]
        else:
            raise ValueError("Currently, No backend available.")