Soporte de transición de fragment 25.1.0 con Recyclerview

Estaba usando transiciones de fragments para animar una vista desde una vista de reciclador, con la versión 25.0.1 de la lib de soporte y la transición funcionaba bien para insert y extraer el fragment de destino.

El código que estoy usando para generar la transacción es:

supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addShanetworkingElement(fragment, commonViews) .commit() 

Ahora estoy tratando de actualizar a la versión 25.1.0 de las bibliotecas de soporte y la animation pop está fallando porque la transición no está encontrando las vistas originales, y está bloqueando con:

 E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at android.support.v4.app.FragmentTransitionCompat21.setNameOverridesOptimized(FragmentTransitionCompat21.java:339) at android.support.v4.app.FragmentTransition.configureTransitionsOptimized(FragmentTransition.java:232) at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:111) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2143) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:822) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:775) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178) at App.ui.base.BaseActivity.onBackPressed(BaseActivity.kt:23) ... 

Pero si deshabilito las "optimizaciones" funciona bien.

 supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addShanetworkingElement(fragment, commonViews) .setAllowOptimization(false) .commit() 

¿Qué estoy haciendo mal?

Editar: las extensiones que estoy usando para envolver los elementos compartidos:

.replaceAddToBackStack

 fun<T : Fragment> FragmentTransaction.replaceAddToBackStack(containerView: Int, fragment: T, tag: String? = null) : FragmentTransaction { return replace(containerView, fragment, tag).addToBackStack(fragment.toString()) } 

.addShanetworkingElement

 fun<T: Fragment, V: View> FragmentTransaction .addShanetworkingElement(destination: T?, shanetworkingViews: List<V>?, shanetworkingTransform: TransitionSet? = null, enterTransition: Transition? = null, exitTransition: Transition? = null ) : FragmentTransaction { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { return this } if (destination == null || shanetworkingViews == null) { return this } val fade = Fade() fade.duration = 150 destination.enterTransition = enterTransition ?: fade destination.allowEnterTransitionOverlap = false destination.allowReturnTransitionOverlap = false destination.exitTransition = exitTransition ?: fade destination.shanetworkingElementEnterTransition = shanetworkingTransform ?: DetailsTransition() destination.shanetworkingElementReturnTransition = shanetworkingTransform ?: DetailsTransition() shanetworkingViews.forEach { this.addShanetworkingElement(it, it.transitionName) } return this }