Cloner cloner = clonerMap.get(event.getClass().getName());
if (cloner == null) {
ClonerGenerator cg = new ClonerGenerator();
// generate byte code that knows how to call the clone method on
// this event
Class clonerClass = cg.generate(event.getClass());
try {
cloner = (Cloner) clonerClass.newInstance();
clonerMap.put(event.getClass().getName(), cloner);
} catch (InstantiationException ie) {
Logger.getLogger(this.getClass()).error(ie);