class SenderCache {

	@SuppressWarnings("unchecked")
	public <T extends Client> Sender<T> get(DataSource source, T client) {
		SenderKey key = new SenderKey(source, client);
		if (!senderMap.containsKey(key)) senderMap.put(key, client.accept(senderCreatorVisitor, source));
		return (Sender<T>) senderMap.get(key);
	}

	@Inject public  SenderCache(SenderFactory senderFactory);

}