code: protected void removeAdminObjectService(ServiceReference<AdminObjectService> reference, String id, boolean jndiName) {
          NamedAdminObjectServiceInfo aosInfo = adminObjectServices.get(id);
          if (aosInfo != null) {
              aosInfo.getServices(jndiName).removeReference(reference);
  
              // If the highest reference before updating is the one we just
              // removed, then we need to deactivate any endpoints using it.
              if (reference.equals(aosInfo.serviceRef)) {
                  deactivateEndpoints(aosInfo.endpointFactories);
  
                  // If there are no more references with this name, then clean
                  // up the info object.  Otherwise, reactivate the endpoints
                  // using the new admin object.
                  if (aosInfo.updateServiceRef() == null) {
                      cleanupAdminObjectServiceInfo(aosInfo);
                  } else {
                      activateDeferredEndpoints(aosInfo.endpointFactories);
                  }
              } else {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "unset reference not the primary reference");
                  }
              }
          }
  
          // With the removal of an adminObjectService, there is a possibility
          // that some lookups could now fail, and endpoints which rely on them
          // need to deactivate until it becomes available again.
          updateSchemeJndiNames(false);
  
      }
docs: Should be private, but findbugs complains about remove method with SR.