'Returns the names of all recognized flags in input, and any flags not found in the enum.'

def lookup_flags(self, flags):

    flag_names = []
    unknown_flags = flags
    for (k, v) in self.__dict__.iteritems():
        if ((flags & v) == v):
            flag_names.append(k)
            unknown_flags = (unknown_flags & (~ v))
    return (flag_names, unknown_flags)
