Note: next is NOT lazily evaluated using this apply method because it can lead to weird things happening if the caller isn't aware it's a by-name parameter.
Same as apply(data, next) except that next is lazily evaluated
(Since version ) see corresponding Javadoc for more information.