Las expresiones Lambda se bloquean con IncompatibleClassChangeError en Android cuando se usa jack

Estoy utilizando Java 8 en mi proyecto de Android. Tengo la configuración de Jack (en el módulo de aplicación de Android) y Retrolambda (en otros módulos).

El problema que tengo es que mis expresiones Lambda se estrellan en un escenario específico cuando trato de hacerlo usar la variable de clase (y puedo reproducirlo en cualquier módulo), en todas las demás situaciones funciona como se esperaba. Tal vez este es un comportamiento estándar de Java, pero no he podido encontrar ninguna explicación hasta ahora. ¿Alguien sabe dónde está el problema? Mi clase y crash abajo:

public class LambdaBugTest { private final String parentClassVariableString = "parentClassVariableString"; public void testLambdas() { // ----------- THESE WORK OK -------------- final Functional simpleLambdaWorks = text -> System.out.print(text); final Functional methodReferenceWorks = System.out::print; final Functional interfaceWithClassParamWorks = new Functional() { @Override public void doSomething(String text) { System.out.print(text + " " + parentClassVariableString); } }; // ----------------------------------------- // ----------- THIS ONE CRASHES ------------ final Functional lambdaWithClassParamCrashes = text -> System.out.print(text + " " + parentClassVariableString); // ----------------------------------------- simpleLambdaWorks.doSomething("Text from simpleLambdaWorks"); methodReferenceWorks.doSomething("Text from methodReferenceWorks"); interfaceWithClassParamWorks.doSomething("Text from interfaceWithClassParamWorks"); lambdaWithClassParamCrashes.doSomething("Text from lambdaWithClassParamCrashes"); } private interface Functional { void doSomething(String text); } } 

El registro de bloqueo:

 08-21 00:27:41.564 25752-25752/debug E/AndroidRuntime: FATAL EXCEPTION: main Process: debug, PID: 25752 java.lang.IncompatibleClassChangeError: The method 'void data.api.mapper.LambdaBugTest.data_api_mapper_LambdaBugTest_lambda$testLambdas$1(java.lang.String)' was expected to be of type direct but instead was found to be of type virtual (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar) at data.api.mapper.LambdaBugTest.access$lambda$1(LambdaBugTest.java) at data.api.mapper.LambdaBugTest$$Lambda$5.doSomething(Unknown) at data.api.mapper.LambdaBugTest.testLambdas(LambdaBugTest.java:27) at home.presentation.HomeActivity.onCreate(HomeActivity.java:47) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.