docs: public void registerFhirServer (FhirServer server, Map<String,Object> props) throws FhirConfigurationException {
  		if (server != null) {
  			String serviceName = (String)props.get("name");
  			if (null == serviceName) {
  				serviceName = "<default>";
  			}
  			String serverName = (String)props.get(FhirServer.SVCPROP_SERVICE_NAME);
  			if (serverName != null) {
  				if (registeredServers.containsKey(serverName)) {
  					throw new FhirConfigurationException("FHIR Server named ["+serverName+"] is already registered. These names must be unique.");
  				}
  				log.trace("Registering FHIR Server ["+serverName+"]. (OSGi service named ["+serviceName+"])");
  				registeredServers.put(serverName, server);
  				if (haveDefaultProviders && registeredServers.size() > 1) {
  					throw new FhirConfigurationException("FHIR Providers are registered without a server name. Only one FHIR Server is allowed.");
  				}
  				Collection<Collection<Object>> providers = pendingProviders.get(serverName);
  				if (providers != null) {
  					log.trace("Registering FHIR providers waiting for this server to be registered.");
  					pendingProviders.remove(serverName);
  					for (Collection<Object> list : providers) {
  						this.registerProviders(list, server, serverName);
  					}
  				}
  				if (registeredServers.size() == 1) {
  					providers = pendingProviders.get(FIRST_SERVER);
  					if (providers != null) {
  						log.trace("Registering FHIR providers waiting for the first/only server to be registered.");
  						pendingProviders.remove(FIRST_SERVER);
  						for (Collection<Object> list : providers) {
  							this.registerProviders(list, server, serverName);
  						}
  					}
  				}
  			} else {
  				throw new FhirConfigurationException("FHIR Server registered in OSGi is missing the required ["+FhirServer.SVCPROP_SERVICE_NAME+"] service-property");
  			}
  		}
  	}