Closed
Description
As noted in the PR #827, there is some "weirdness" with what appears in the InnerClasses
collection. It turns out this is due to a misunderstanding of what the InnerClasses
collection contains.
Per the docs:
If a class has members that are classes or interfaces, its constant_pool table (and hence its InnerClasses attribute)
must refer to each such member, even if that member is not otherwise mentioned by the class. **These rules
imply that a nested class or interface member will have InnerClasses information for each enclosing class and
for each immediate member.**
That is, a PagedList$Config$Builder$Companion
class lists its grandparent type PagedList$Config
and parent type PagedList$Config$Builder
as InnerClasses
.
The change made in PR #827 loops through InnerClasses
, marking them as internal
, assuming they are all nested types. This is causing us to hide parent types when we are trying to hide child types.
This will require more investigation and the deadline for 16.11 is ~now, so we're just going to revert the original commit for now.