/**
  * This method is like register, but is willing to swap out an existing instance. We are not
  * protected from clients that have looked up the previous service and are making calls on it, so
  * this is a bit of a hack. Currently it is required for the unit tests to work properly, but
  * should be phased out when possible.
  */
 public static <S, C extends S> void replace(Class<S> interfaceClazz, C concreteImpl) {
   innerPut(interfaceClazz, concreteImpl, true);
 }
 public static <S, C extends S> void register(Class<S> interfaceClazz, C concreteImpl) {
   innerPut(interfaceClazz, concreteImpl, false);
 }