revealAccess

private fun revealAccess(access: Int, ambiguous: Boolean): Int

widenAccess, plus ACC_SYNTHETIC made to mean exactly one thing on a grafted member: source cannot name it — which is what K2 reads it as when it drops the member from a Java use-site scope. Mixin sets the flag on the @Accessor/@Invoker bodies it generates and not on what it merges from mixin source, and neither tracks whether the name survives the rename, so the graft decides it here instead of inheriting it. An ambiguous member is still reachable through the interface Mixin grafts alongside it; the base member it collided with has no such second name, which is why that one keeps it.