package com.timgroup.eventsubscription;

import com.timgroup.eventstore.api.Position;
import com.timgroup.eventstore.api.ResolvedEvent;
import org.joda.time.DateTime;

import java.util.ArrayList;
import java.util.List;

final class BroadcastingEventHandler implements EventHandler {
    private final List<EventHandler> handlers;

    BroadcastingEventHandler(List<? extends EventHandler> handlers) {
        this.handlers = new ArrayList<>(handlers);
    }

    @Override
    public void apply(ResolvedEvent resolvedEvent, Event deserializedEvent, boolean endOfBatch) {
        for (EventHandler handler : handlers) {
            handler.apply(resolvedEvent, deserializedEvent, endOfBatch);
        }
    }

    @Override
    public void apply(Position position, DateTime timestamp, Event deserialized, boolean endOfBatch) {
        for (EventHandler handler : handlers) {
            handler.apply(position, timestamp, deserialized, endOfBatch);
        }
    }

    @Override
    public void apply(Event deserialized) {
        for (EventHandler handler : handlers) {
            handler.apply(deserialized);
        }
    }
}

@@ -694,32 +694,225 @@
        %7D%0A    %7D%0A%0A
+    @Override%0A    public void apply(Position position, Event deserialized) %7B%0A        for (EventHandler handler : handlers) %7B%0A            handler.apply(position, deserialized);%0A        %7D%0A    %7D%0A%0A
     @Override%0A  

Add new method to broadcast for consistency