anchor.diff:    /// horizontally instead.
     final int maxLines;
   
  -  /// Form-specific data, required if this Input is part of a Form.
  +  /// The [Form] entry for this input control. Required if the input is in a [Form].
  +  /// Ignored otherwise.
  +  ///
  +  /// Putting an Input in a [Form] means the Input will keep track of its own value,
  +  /// using the [value] property only as the field's initial value. It also means
  +  /// that when any field in the [Form] changes, all the widgets in the form will be
  +  /// rebuilt, so that each field's [FormField.validator] callback can be reevaluated.
     final FormField<String> formField;
   
     /// Called when the text being edited changes.
  +  ///
  +  /// If the [Input] is not in a [Form], the [value] must be updated each time [onChanged]
  +  /// is invoked. (If there is a [Form], then the value is tracked in the [formField], and
  +  /// this callback is purely advisory.)
  +  ///
  +  /// If the [Input] is in a [Form], this is called after the [formField] is updated.
     final ValueChanged<InputValue> onChanged;
   
     /// Called when the user indicates that they are done editing the text in the field.
  +  ///
  +  /// If the [Input] is in a [Form], this is called after the [formField] is notified.
     final ValueChanged<InputValue> onSubmitted;
   
     @override
  
positive.code:     return null;
    }
  
    void onChanged(InputValue value) {
      FormScope scope = FormScope.of(inputState.context);
      assert(scope != null);
      this.value = value;
      if (field.setter != null)
        field.setter(value.text);
      scope.onFieldChanged();
    }
  
    void onSubmitted(InputValue value) {
      FormScope scope = FormScope.of(inputState.context);
      assert(scope != null);
      if (scope.form.onSubmitted != null)
        scope.form.onSubmitted();
      scope.onFieldChanged();
    }
  }
  
negative.code:     ThemeData themeData = Theme.of(context);
      BuildContext focusContext = focusKey.currentContext;
      bool focused = focusContext != null && Focus.at(focusContext, autofocus: config.autofocus);
      if (_formData == null) {
        _formData = _FormFieldData.maybeCreate(context, this);
      } else {
        _formData = _formData.maybeDispose(context);
      }
      InputValue value =  _formData?.value ?? config.value ?? InputValue.empty;
      ValueChanged<InputValue> onChanged = _formData?.onChanged ?? config.onChanged;
      ValueChanged<InputValue> onSubmitted = _formData?.onSubmitted ?? config.onSubmitted;
  