code: protected synchronized void removeEndPointActivationService(ServiceReference<EndpointActivationService> reference) {
          String activationSvcId = (String) reference.getProperty(ACT_SPEC_CFG_ID);
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "activationSvcId : " + activationSvcId);
          }
  
          EndpointActivationServiceInfo easInfo = endpointActivationServices.get(activationSvcId);
          if (easInfo != null) {
              // If the service was being replaced, then the add method would
              // have been called first, and this reference would no longer be
              // set.  If it's still set, then the service is being removed and
              // there is no replacement, so just deactivate all endpoints.
              if (easInfo.serviceRef.equals(reference)) {
                  deactivateEndpoints(easInfo.endpointFactories);
  
                  easInfo.setReference(null);
                  cleanupEndpointActivationServiceInfo(easInfo);
              } else {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "unset reference already removed");
                  }
              }
          }
      }
docs: Declarative service method for removing an EndpointActivationService.