Applyaple.apply() uses InputStream again, not Input, because I want to
retain the ability to apply to streams without random access.