@SuppressWarnings( {"unchecked"})
protected <R extends Service> R createService(ServiceBinding<R> serviceBinding) {
final ServiceInitiator<R> serviceInitiator = serviceBinding.getServiceInitiator();
if ( serviceInitiator == null ) {
// this condition should never ever occur
throw new UnknownServiceException( serviceBinding.getServiceRole() );
}
try {
R service = serviceBinding.getServiceRegistry().initiateService( serviceInitiator );
// IMPL NOTE : the register call here is important to avoid potential stack overflow issues