// Path: src/main/java/biz/paluch/spinach/api/Job.java
// public class Job<K, V> {
//     private K queue;
//     private String id;
//     private V body;
//     private Map<String, Long> counters;
// 
//     protected Job() {
//     }
// 
//     public Job(K queue, String id, V body, Map<String, Long> counters) {
//         this.queue = queue;
//         this.id = id;
//         this.body = body;
//         this.counters = counters;
//     }
// 
//     /**
//      *
//      * @return the queue
//      */
//     public K getQueue() {
//         return queue;
//     }
// 
//     /**
//      *
//      * @return the JobId
//      */
//     public String getId() {
//         return id;
//     }
// 
//     /**
//      *
//      * @return the Job body
//      */
//     public V getBody() {
//         return body;
//     }
// 
//     /**
//      * If requested with a WITHCOUNTERS flag, getjob also populates a counters field.
//      *
//      * @return map of counters
//      */
//     public Map<String, Long> getCounters() { return counters; }
// }


import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map;
import biz.paluch.spinach.api.Job;
import com.lambdaworks.redis.codec.RedisCodec;
import com.lambdaworks.redis.output.CommandOutput;
        if (queue == null) {
            queue = codec.decodeKey(bytes);
            return;
        }

        if (id == null) {
            id = decodeAscii(bytes);
            return;
        }

        if (body == null) {
            counters = new HashMap<String, Long>();
            body = codec.decodeValue(bytes);
            return;
        }

        lastKey = decodeAscii(bytes);
    }

    @Override
    public void set(long integer) {
        if (lastKey != null) {
            counters.put(lastKey, integer);
            lastKey = null;
        }
    }

    @Override
    public void complete(int depth) {
        if (queue != null && id != null && body != null && counters != null) {
// Path: src/main/java/biz/paluch/spinach/api/Job.java
// public class Job<K, V> {
//     private K queue;
//     private String id;
//     private V body;
//     private Map<String, Long> counters;
// 
//     protected Job() {
//     }
// 
//     public Job(K queue, String id, V body, Map<String, Long> counters) {
//         this.queue = queue;
//         this.id = id;
//         this.body = body;
//         this.counters = counters;
//     }
// 
//     /**
//      *
//      * @return the queue
//      */
//     public K getQueue() {
//         return queue;
//     }
// 
//     /**
//      *
//      * @return the JobId
//      */
//     public String getId() {
//         return id;
//     }
// 
//     /**
//      *
//      * @return the Job body
//      */
//     public V getBody() {
//         return body;
//     }
// 
//     /**
//      * If requested with a WITHCOUNTERS flag, getjob also populates a counters field.
//      *
//      * @return map of counters
//      */
//     public Map<String, Long> getCounters() { return counters; }
// }


// Path: src/main/java/biz/paluch/spinach/output/JobOutput.java
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map;
import biz.paluch.spinach.api.Job;
import com.lambdaworks.redis.codec.RedisCodec;
import com.lambdaworks.redis.output.CommandOutput;

        if (queue == null) {
            queue = codec.decodeKey(bytes);
            return;
        }

        if (id == null) {
            id = decodeAscii(bytes);
            return;
        }

        if (body == null) {
            counters = new HashMap<String, Long>();
            body = codec.decodeValue(bytes);
            return;
        }

        lastKey = decodeAscii(bytes);
    }

    @Override
    public void set(long integer) {
        if (lastKey != null) {
            counters.put(lastKey, integer);
            lastKey = null;
        }
    }

    @Override
    public void complete(int depth) {
        if (queue != null && id != null && body != null && counters != null) {
            output = new Job<K, V>(queue, id, body, counters);