code: def _validate_props(self):
          
          for key, prop in iteritems(self._props):
              try:
                  value = self._get(key)
                  err_msg = 'Invalid value for property {}: {}'.format(key, value)
                  if value is not None:
                      change = dict(name=key, previous=value, value=value,
                                    mode='validate')
                      self._notify(change)
                      if not prop.equal(value, change['value']):
                          raise utils.ValidationError(err_msg, 'invalid',
                                                      prop.name, self)
                  if not prop.assert_valid(self):
                      raise utils.ValidationError(err_msg, 'invalid',
                                                  prop.name, self)
              except utils.ValidationError as val_err:
                  if getattr(self, '_validation_error_tuples', None) is not None:
                      self._validation_error_tuples += val_err.error_tuples
                  else:
                      raise
          return True
docs: Assert that all the properties are valid on validate()