class InternalClass { private func foo() {} internal func bar() {} } // Marked @inline(never) to keep from devirtualizing based on this. @inline(never) func getInternalClass() -> InternalClass { return InternalClass() } @_transparent func invokeFoo(_ obj: InternalClass) { obj.foo() } // Note that neither 'foo' nor 'bar' are ever overridden. private class PrivateSubclass : InternalClass {}