'Are the files associated with this lineage self-consistent?
:returns: Whether the files stored in connection with this
lineage appear to be correct and consistent with one
another.
:rtype: bool'

def _consistent(self):

    for x in (self.cert, self.privkey, self.chain, self.fullchain):
        if (not os.path.isabs(x)):
            logger.debug('Element    %s    is    not    referenced    with    an    absolute    path.', x)
            return False
    for x in (self.cert, self.privkey, self.chain, self.fullchain):
        if (not os.path.islink(x)):
            logger.debug('Element    %s    is    not    a    symbolic    link.', x)
            return False
    for kind in ALL_FOUR:
        link = getattr(self, kind)
        target = get_link_target(link)
        if (not os.path.samefile(os.path.dirname(target), self.archive_dir)):
            logger.debug("Element's    link    does    not    point    within    the    cert    lineage's    directory    within    the    official    archive    directory.    Link:    %s,    target    directory:    %s,    archive    directory:    %s.    If    you've    specified    the    archive    directory    in    the    renewal    configuration    file,    you    may    need    to    update    links    by    running    certbot    update_symlinks.", link, os.path.dirname(target), self.archive_dir)
            return False
        if (not os.path.exists(target)):
            logger.debug('Link    %s    points    to    file    %s    that    does    not    exist.', link, target)
            return False
        pattern = re.compile('^{0}([0-9]+)\\.pem$'.format(kind))
        if (not pattern.match(os.path.basename(target))):
            logger.debug('%s    does    not    follow    the    archive    naming    convention.', target)
            return False
    return True
