code: def is_correct(self):
          
          state = self.conf_is_correct
          properties = self.__class__.properties
  
          for prop, entry in list(properties.items()):
              if hasattr(self, 'special_properties') and prop in getattr(self, 'special_properties'):
                  continue
              if not hasattr(self, prop) and entry.required:
                  msg = "[%s::%s] %s property is missing" % (self.my_type, self.get_name(), prop)
                  self.add_error(msg)
  
          state = state & self.conf_is_correct
          return state
docs: Check if this object is correct
  
          This function:
          - checks if the required properties are defined, ignoring special_properties if some exist
          - logs the previously found warnings and errors
  
          :return: True if it's correct, otherwise False
          :rtype: bool