anchor.diff:  
     void show() {
       if (!_modal.opened) {
  +      _addValidatableFields(
  +          SparkWidget.inlineNestedContentNodes($['bodyContent']));
         _updateFormValidity();
         _modal.toggle();
       }
  
positive.code:   }
  
    void _addValidatableFields(Iterable<Node> candidates) {
      candidates.forEach((Element element) {
        if (element is InputElement) {
          if (element.willValidate) {
  
negative.code: 
  @reflectable
  class _ValidatedField {
    static const INVALID_CLASS = 'invalid';
    
    final InputElement _element;
    final Function _onValidityChange;
    bool _wasVisited = false;
    bool _isValid;
  
    bool get isValid => _isValid;
  
    _ValidatedField(this._element, this._onValidityChange) {
      // Just listening to the [_body.onChange] is not enough to update
      // the validity in real-time as the user types.
      _element
          ..onFocus.listen(_setVisited)
          ..onClick.listen(_setVisited)
          ..onInput.listen(_updateValidity)
          ..onPaste.listen(_updateValidity)
          ..onReset.listen(_updateValidity);
      _element.classes.remove('invalid');
    }
  
    void _setVisited([_]) {
      _wasVisited = true;
      _updateValidity();
    }
    
    void _updateValidity([_]) {
      _isValid = _element.disabled || _element.checkValidity();
      // Don't rely on the automatic ':invalid' pseudo-class for finer control.
      _element.classes.toggle('invalid', _wasVisited && !_isValid);
      _onValidityChange();
    }
  }
  