// Path: src/main/java/com/cscotta/deschutes/api/EventWrapper.java
// public interface EventWrapper<RawInput, WrappedInput> {
// 
//     public WrappedInput wrap(RawInput raw);
// 
// }


import com.cscotta.deschutes.api.EventWrapper;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Parser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.Iterator;
package com.cscotta.deschutes.input;



public class ProtobufReader<ProtoType, Input> implements Iterable<Input> {

    final Parser<ProtoType> parser;
    final InputStream inputStream;
    final EventWrapper<ProtoType, Input> eventWrapper;
    private static final Logger log = LoggerFactory.getLogger(ProtobufReader.class);

    public ProtobufReader(Parser<ProtoType> parser,
// Path: src/main/java/com/cscotta/deschutes/api/EventWrapper.java
// public interface EventWrapper<RawInput, WrappedInput> {
// 
//     public WrappedInput wrap(RawInput raw);
// 
// }


// Path: src/main/java/com/cscotta/deschutes/input/ProtobufReader.java
import com.cscotta.deschutes.api.EventWrapper;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Parser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.Iterator;

package com.cscotta.deschutes.input;



public class ProtobufReader<ProtoType, Input> implements Iterable<Input> {

    final Parser<ProtoType> parser;
    final InputStream inputStream;
    final EventWrapper<ProtoType, Input> eventWrapper;
    private static final Logger log = LoggerFactory.getLogger(ProtobufReader.class);

    public ProtobufReader(Parser<ProtoType> parser,
                          EventWrapper<ProtoType, Input> eventWrapper,