@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;
 }