def METHOD_NAME(self, vs, **kwargs):
    fnames = set(self.names())
    fnames_vs = set(vs.names())
    common = fnames.intersection(fnames_vs)
    extra = fnames.difference(fnames_vs)
    notavl = fnames_vs.difference(fnames)
    iextra = {}
    inotavl = {}
    idiff = set()
    for f in common:
        implies = self.copt.feature_implies(f)
        implies_vs = vs.copt.feature_implies(f)
        e = implies.difference(implies_vs)
        i = implies_vs.difference(implies)
        if not i and not e:
            continue
        if e:
            iextra[f] = e
        if i:
            inotavl[f] = e
        idiff.add(f)
    def fbold(f):
        if f in extra:
            return f':enabled:`{f}`'
        if f in notavl:
            return f':disabled:`{f}`'
        return f
    def fbold_implies(f, i):
        if i in iextra.get(f, {}):
            return f':enabled:`{i}`'
        if f in notavl or i in inotavl.get(f, {}):
            return f':disabled:`{i}`'
        return i
    diff_all = self.serialize(idiff.union(extra))
    diff_all += vs.serialize(notavl)
    content = self.gen_table(
        diff_all, fstyle=fbold, fstyle_implies=fbold_implies, **kwargs
    )
    return content