function processParseErrors(parseValid) {
      var errorKey = ctrl.$$parserName || 'parse';
      if (parseValid === undefined) {
        setValidity(errorKey, null);
      } else {
        setValidity(errorKey, parseValid);
        if (!parseValid) {
          forEach(ctrl.$validators, function(v, name) {
            setValidity(name, null);
          });
          forEach(ctrl.$asyncValidators, function(v, name) {
            setValidity(name, null);
          });
          return false;
        }
      }
      return true;
    }
@ngdoc method
@name ngModel.NgModelController#$validate

@description
Runs each of the registered validators (first synchronous validators and then
asynchronous validators).
If the validity changes to invalid, the model will be set to `undefined`,
unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
If the validity changes to valid, it will set the model to the last available valid
modelValue, i.e. either the last parsed value or the last value set from the scope.