// Path: src/main/java/com/readytalk/crdt/CRDTFactory.java
// @ThreadSafe
// public interface CRDTFactory<T extends CRDT<?, T>> {
// 	T create();
// 	T create(byte [] payload);
// }


import javax.inject.Inject;
import javax.inject.Singleton;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.readytalk.crdt.CRDTFactory;
import com.readytalk.crdt.inject.ClientId;
package com.readytalk.crdt.counters;



@Singleton
public class GCounterFactory implements CRDTFactory<GCounter> {
	
	private final ObjectMapper serializer;
	private final String clientId;
	
// Path: src/main/java/com/readytalk/crdt/CRDTFactory.java
// @ThreadSafe
// public interface CRDTFactory<T extends CRDT<?, T>> {
// 	T create();
// 	T create(byte [] payload);
// }


// Path: src/main/java/com/readytalk/crdt/counters/GCounterFactory.java
import javax.inject.Inject;
import javax.inject.Singleton;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.readytalk.crdt.CRDTFactory;
import com.readytalk.crdt.inject.ClientId;

package com.readytalk.crdt.counters;



@Singleton
public class GCounterFactory implements CRDTFactory<GCounter> {
	
	private final ObjectMapper serializer;
	private final String clientId;
	
	@Inject