code: private synchronized Simon createSimon(String name, Class<? extends AbstractSimon> simonClass) {
  		AbstractSimon simon = allSimons.get(name);
  		if (simon == null) {
  			SimonUtils.validateSimonName(name);
  			simon = newSimon(name, simonClass);
  		} else if (simon instanceof UnknownSimon) {
  			simon = replaceUnknownSimon(simon, simonClass);
  		}
  		callback.onSimonCreated(simon);
  		return simon;
  	}
docs: Even with ConcurrentHashMap we want to synchronize here, so newly created Simons can be fully
  set up with {@link Callback#onSimonCreated(Simon)}. ConcurrentHashMap still works fine for
  listing Simons, etc.