RxJava: Как условно применить операторы к наблюдаемой, не разрывая цепочку

У меня есть цепочка операторов на RxJava наблюдаемой. Я хотел бы иметь возможность применять один из двух операторов в зависимости от логического значения без "разрыва цепи".

Я относительно новичок в Rx (Java) и чувствую, что, возможно, есть более идиоматичный и читаемый способ сделать это, чем мой нынешний подход к введению временной переменной.

Вот конкретный пример: буферизация элементов из наблюдаемого, если поле размера партии не равно нулю, в противном случае создается единая партия неограниченного размера сtoList():

Observable<Item> source = Observable.from(newItems);
Observable<List<Item>> batchedSource = batchSize == null ?
                source.toList() :
                source.buffer(batchSize);
return batchedSource.flatMap(...).map(...)

Возможно ли что-то подобное? (псевдо-лямбды, потому что Java):

Observable.from(newItems)
    .applyIf(batchSize == null,
             { o.toList() },
             { o.buffer(batchSize) })
    .flatMap(...).map(...)