def sub_tag(self, path, follow=True):
        """Returns direct sub-record with given tag name or None.

        Path can be a simple tag name, in which case the first direct
        sub-record of this record with the matching tag is returned. Path
        can also consist of several tags separated by slashes, in that case
        sub-records are searched recursively.

        If `follow` is True then pointer records are resolved and pointed
        record is used instead of pointer record, this also works for all
        intermediate records in a path.

        :param str path: tag names separated by slashes.
        :param boolean follow: If True then resolve pointers.
        :return: `Record` instance or `None` if sub-record with a given
            tag does not exist.
        """
        tags = path.split('/')
        rec = self
        for tag in tags:
            recs = [x for x in (rec.sub_records or []) if x.tag == tag]
            if not recs:
                return None
            rec = recs[0]
            if follow and isinstance(rec, Pointer):
                rec = rec.ref
        return rec
Returns direct sub-record with given tag name or None.

        Path can be a simple tag name, in which case the first direct
        sub-record of this record with the matching tag is returned. Path
        can also consist of several tags separated by slashes, in that case
        sub-records are searched recursively.

        If `follow` is True then pointer records are resolved and pointed
        record is used instead of pointer record, this also works for all
        intermediate records in a path.

        :param str path: tag names separated by slashes.
        :param boolean follow: If True then resolve pointers.
        :return: `Record` instance or `None` if sub-record with a given
            tag does not exist.