Return model instance/registration object matching given criteria
        :param path: tuple or dpath expression representing the hierarchy/chain of parent keys
        :param values: single value or list of values to match. If exact is False then .contains method is used as filter
        :param raise_absent: if True then raise exception if no match is found
        :return: single model instance/registration object

def fobj(self, path=None, values=None, unique=True, raise_absent=False):
        """
        Return model instance/registration object matching given criteria
        :param path: tuple or dpath expression representing the hierarchy/chain of parent keys
        :param values: single value or list of values to match. If exact is False then .contains method is used as filter
        :param raise_absent: if True then raise exception if no match is found
        :return: single model instance/registration object
        """
        return self.path_index[self.search(path=path, unique=unique, values=values, raise_absent=raise_absent)[0]]