code: func (s *specAggregator) AddUpdateAPIService(handler http.Handler, apiService *apiregistration.APIService) error {
  	s.rwMutex.Lock()
  	defer s.rwMutex.Unlock()
  
  	if apiService.Spec.Service == nil {
  		// All local specs should be already aggregated using local delegate chain
  		return nil
  	}
  
  	newSpec := &openAPISpecInfo{
  		apiService: *apiService,
  		handler:    handler,
  	}
  	if specInfo, existingService := s.openAPISpecs[apiService.Name]; existingService {
  		newSpec.etag = specInfo.etag
  		newSpec.spec = specInfo.spec
  	}
  	return s.tryUpdatingServiceSpecs(newSpec)
  }
docs: // AddUpdateAPIService adds or updates the api service. It is thread safe.