code: def unregister(self, svc_ref):
          # type: (ServiceReference) -> Any
          
          with self.__svc_lock:
              try:
                  # Try in pending services
                  return self.__pending_services.pop(svc_ref)
              except KeyError:
                  # Not pending: continue
                  pass
  
              if svc_ref not in self.__svc_registry:
                  raise BundleException("Unknown service: {0}".format(svc_ref))
  
              # Get the owner
              bundle = svc_ref.get_bundle()
  
              # Get the service instance
              service = self.__svc_registry.pop(svc_ref)
  
              for spec in svc_ref.get_property(OBJECTCLASS):
                  spec_services = self.__svc_specs[spec]
                  # Use bisect to remove the reference (faster)
                  idx = bisect.bisect_left(spec_services, svc_ref)
                  del spec_services[idx]
                  if not spec_services:
                      del self.__svc_specs[spec]
  
              # Remove the service factory
              if svc_ref.is_factory():
                  # Call unget_service for all client bundle
                  factory, svc_reg = self.__svc_factories.pop(svc_ref)
                  for counter in self.__factory_usage.values():
                      counter.cleanup_service(factory, svc_reg)
              else:
                  # Delete bundle association
                  bundle_services = self.__bundle_svc[bundle]
                  bundle_services.remove(svc_ref)
                  if not bundle_services:
                      # Don't keep empty lists
                      del self.__bundle_svc[bundle]
  
              return service
docs: Unregisters a service
  
          :param svc_ref: A service reference
          :return: The unregistered service instance
          :raise BundleException: Unknown service reference