import java.util.function.Consumer; class Pipeline implements Consumer { @Override public final void accept(I input) {} public void then(Pipeline pipeline, final Observable observable) { observable.subscribe(pipeline::accept); } } interface Observable { void subscribe(Consumer x); }