@verify.register(nodes.TypeInfo)
def verify_typeinfo(stub: nodes.TypeInfo, runtime: MaybeMissing[Type[Any]], object_path: List[str]) -> Iterator[Error]:
    if isinstance(runtime, Missing):
        (yield Error(object_path, 'is not present at runtime', stub, runtime, stub_desc=repr(stub)))
        return
    if (not isinstance(runtime, type)):
        (yield Error(object_path, 'is not a type', stub, runtime, stub_desc=repr(stub)))
        return
    to_check = set(stub.names)
    to_check.update((m for m in cast(Any, vars)(runtime) if ((not m.startswith('_')) or (m in SPECIAL_DUNDERS))))
    for entry in sorted(to_check):
        mangled_entry = entry
        if (entry.startswith('__') and (not entry.endswith('__'))):
            mangled_entry = '_{}{}'.format(stub.name, entry)
        (yield from verify(next((t.names[entry].node for t in stub.mro if (entry in t.names)), MISSING), getattr(runtime, mangled_entry, MISSING), (object_path + [entry])))
@verify.register(nodes.TypeInfo)
def verify_typeinfo(stub: nodes.TypeInfo, runtime: MaybeMissing[Type[Any]], object_path: List[str]) -> Iterator[Error]:
    if isinstance(runtime, Missing):
        (yield Error(object_path, 'is not present at runtime', stub, runtime, stub_desc=repr(stub)))
        return
    if (not isinstance(runtime, type)):
        (yield Error(object_path, 'is not a type', stub, runtime, stub_desc=repr(stub)))
        return
    to_check = set(stub.names)
    to_check.update((m for m in cast(Any, vars)(runtime) if ((not m.startswith('_')) or (m in SPECIAL_DUNDERS))))
    for entry in sorted(to_check):
        mangled_entry = entry
        if (entry.startswith('__') and (not entry.endswith('__'))):
            mangled_entry = '_{}{}'.format(stub.name, entry)
        (yield from verify(next((t.names[entry].node for t in stub.mro if (entry in t.names)), MISSING), getattr(runtime, mangled_entry, MISSING), (object_path + [entry])))