'Return a list of the verbnet class identifiers.  If a file
identifier is specified, then return only the verbnet class
identifiers for classes (and subclasses) defined by that file.
If a lemma is specified, then return only verbnet class
identifiers for classes that contain that lemma as a member.
If a wordnetid is specified, then return only identifiers for
classes that contain that wordnetid as a member.  If a classid
is specified, then return only identifiers for subclasses of
the specified verbnet class.'

def classids(self, lemma=None, wordnetid=None, fileid=None, classid=None):

    if (len([x for x in [lemma, wordnetid, fileid, classid] if (x is not None)]) > 1):
        raise ValueError(u'Specify    at    most    one    of:    fileid,    wordnetid,    fileid,    classid')
    if (fileid is not None):
        return [c for (c, f) in self._class_to_fileid.items() if (f == fileid)]
    elif (lemma is not None):
        return self._lemma_to_class[lemma]
    elif (wordnetid is not None):
        return self._wordnet_to_class[wordnetid]
    elif (classid is not None):
        xmltree = self.vnclass(classid)
        return [subclass.get(u'ID') for subclass in xmltree.findall(u'SUBCLASSES/VNSUBCLASS')]
    else:
        return sorted(self._class_to_fileid.keys())
