@Override protected boolean isVisible( @NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) { if (what instanceof CallableMemberDescriptor && ((CallableMemberDescriptor) what).getKind() == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) { return false; } DeclarationDescriptor parent = what; while (parent != null) { parent = parent.getContainingDeclaration(); if ((parent instanceof ClassDescriptor && !DescriptorUtils.isClassObject(parent)) || parent instanceof NamespaceDescriptor) { break; } } DeclarationDescriptor fromParent = from; while (fromParent != null) { if (parent == fromParent) { return true; } fromParent = fromParent.getContainingDeclaration(); } return false; }