code: def validate(self, safe_callback=True):
          # type: (bool) -> bool
          
          with self._lock:
              if self.state in (
                  StoredInstance.VALID,
                  StoredInstance.VALIDATING,
                  StoredInstance.ERRONEOUS,
              ):
                  # No work to do (yet)
                  return False
  
              if self.state == StoredInstance.KILLED:
                  raise RuntimeError("{0}: Zombies !".format(self.name))
  
              # Clear the error trace
              self.error_trace = None
  
              # Call the handlers
              self.__safe_handlers_callback("pre_validate")
  
              if safe_callback:
                  # Safe call back needed and not yet passed
                  self.state = StoredInstance.VALIDATING
  
                  # Call @ValidateComponent first, then @Validate
                  if not self.__safe_validation_callback(
                      constants.IPOPO_CALLBACK_VALIDATE
                  ):
                      # Stop there if the callback failed
                      self.state = StoredInstance.VALID
                      self.invalidate(True)
  
                      # Consider the component has erroneous
                      self.state = StoredInstance.ERRONEOUS
                      return False
  
              # All good
              self.state = StoredInstance.VALID
  
              # Call the handlers
              self.__safe_handlers_callback("post_validate")
  
              # We may have caused a framework error, so check if iPOPO is active
              if self._ipopo_service is not None:
                  # pylint: disable=W0212
                  # Trigger the iPOPO event (after the service _registration)
                  self._ipopo_service._fire_ipopo_event(
                      constants.IPopoEvent.VALIDATED, self.factory_name, self.name
                  )
          return True
docs: Ends the component validation, registering services
  
          :param safe_callback: If True, calls the component validation callback
          :return: True if the component has been validated, else False
          :raise RuntimeError: You try to awake a dead component