¿Conversión de Kotlin SAM con una interfaz Java interna privada?

Considere la siguiente class de Java:

package javapkg; public class JavaClass { private interface JavaInterface { void foo(); } public void bar(JavaInterface ji) { ji.foo(); } } 

Código Kotlin que usa la interfaz interna de esta class con una conversión SAM (tenga en count que KotlinClass está en un package diferente):

 package kotlinpkg import javapkg.JavaClass class KotlinClass { fun f() { val jc = JavaClass() // Does not compile: // "Cannot access 'JavaInterface': it is private in 'JavaClass'" jc.bar(object : JavaClass.JavaInterface{ override fun foo() { } }) // Compiles and runs fine on Android Nougat, but throws // a NoClassDefFoundError exception on Kitkat jc.bar { } } } 

Ahora, si JavaInterface público el JavaInterface interno, el código de Kotlin (tanto la conversión de SAM como la expresión de object) se comstack y se ejecuta correctamente en todas las plataforms. La expresión de object no se puede comstackr con la interfaz siendo privada porque JavaClass y KotlinClass están en packages separados, y supongo que la conversión de SAM falla con una exception de time de ejecución por el mismo motivo.

Mi pregunta: ¿por qué la conversión SAM se comstack correctamente? Parece que no debería porque la interfaz es privada, y peor causa una exception de time de ejecución en Kitkat. Además, la expresión del object NO comstack. ¿Es esto un error en el comstackdor de Kotlin, o es deliberado?