code: synchronized void updateRegistration(BundleContext ctx, ConcurrentServiceReferenceMap<String, SSLConfiguration> sslConfigs) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "updateRegistration", ctx, sslConfigs);
          }
  
          if (ctx == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "updateRegistration");
              }
              return;
          }
  
          // Only activate this registration *IF* there is a valid SSL repertoire configuration available for it
          ServiceReference<SSLConfiguration> requiredRef = sslConfigs.getReference(sslRefId);
          if (requiredRef != null && sslConfigs.getService(sslRefId) != null) {
              properties.put(SSLChannelData.ALIAS_KEY, sslRefId);
              // Set the service reference id as the alias 
              updateSuper();
              if (registration == null) {
                  registration = ctx.registerService(ChannelConfiguration.class, this, properties);
              } else {
                  // Only update the service properties if we have outstanding changes
                  registration.setProperties(properties);
              }
          } else {
              // No shoes, no shirt, no service.
              unregister();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "updateRegistration");
          }
      }
docs: Register this as a service in the service registry. Sanity is preserved
  in this one single method. SSL configurations (repertoires) are required
  for the ssl connection to have a chance of working. This method needs to
  ensure that the registration is only created (or updated) if that
  referenced repertoire exists.
  
  
  Package private.
  
  @param ctx Bundle context to register service with.