Соглашусь, в этом вся идея - избежать лишних JVM Allocations и dispatch. Когда Я проверял, что выводит компилятор из этой конструкции на OpenJdk 11, Я использовал CFR Decompiler и получил такое: arrowComposed = (ZArrow)MODULE$.arrows().foldLeft((Object)ZArrow$.MODULE$.identity(), (Function2 & Serializable)(x$4, x$5)