// Path: src/main/java/org/simondean/vertx/async/WaterfallBuilder.java
// public interface WaterfallBuilder {
//   public <R> Waterfall<R> task(Consumer<AsyncResultHandler<R>> task);
// }
// 
// Path: src/main/java/org/simondean/vertx/async/Waterfall.java
// public interface Waterfall<T> {
//   public <R> Waterfall<R> task(BiConsumer<T, AsyncResultHandler<R>> task);
// 
//   public void run(AsyncResultHandler<T> handler);
// }


import org.simondean.vertx.async.WaterfallBuilder;
import org.simondean.vertx.async.Waterfall;
import org.vertx.java.core.AsyncResultHandler;
import java.util.function.Consumer;
package org.simondean.vertx.async.internal;



public class WaterfallBuilderImpl implements WaterfallBuilder {
  @Override
// Path: src/main/java/org/simondean/vertx/async/WaterfallBuilder.java
// public interface WaterfallBuilder {
//   public <R> Waterfall<R> task(Consumer<AsyncResultHandler<R>> task);
// }
// 
// Path: src/main/java/org/simondean/vertx/async/Waterfall.java
// public interface Waterfall<T> {
//   public <R> Waterfall<R> task(BiConsumer<T, AsyncResultHandler<R>> task);
// 
//   public void run(AsyncResultHandler<T> handler);
// }


// Path: src/main/java/org/simondean/vertx/async/internal/WaterfallBuilderImpl.java
import org.simondean.vertx.async.WaterfallBuilder;
import org.simondean.vertx.async.Waterfall;
import org.vertx.java.core.AsyncResultHandler;
import java.util.function.Consumer;

package org.simondean.vertx.async.internal;



public class WaterfallBuilderImpl implements WaterfallBuilder {
  @Override
  public <T> Waterfall<T> task(Consumer<AsyncResultHandler<T>> task) {