anchor.diff:    }
   }
   
  -/// Function signature expected for creating custom [TextInputFormatter] 
  +/// Function signature expected for creating custom [TextInputFormatter]
   /// shorthands via [TextInputFormatter.withFunction];
   typedef TextEditingValue TextInputFormatFunction(
  -    TextEditingValue oldValue, 
  +    TextEditingValue oldValue,
       TextEditingValue newValue,
   );
   
   /// Wiring for [TextInputFormatter.withFunction].
   class _SimpleTextInputFormatter extends TextInputFormatter {
  -  _SimpleTextInputFormatter(this.formatFunction) : 
  +  _SimpleTextInputFormatter(this.formatFunction) :
       assert(formatFunction != null);
   
     final TextInputFormatFunction formatFunction;
  -  
  +
     @override
     TextEditingValue formatEditUpdate(
  -    TextEditingValue oldValue, 
  +    TextEditingValue oldValue,
       TextEditingValue newValue
     ) {
       return formatFunction(oldValue, newValue);
     }
   }
   
  -/// A [TextInputFormatter] that prevents the insertion of blacklisted 
  +/// A [TextInputFormatter] that prevents the insertion of blacklisted
   /// characters patterns.
  -/// 
  -/// Instances of blacklisted characters found in the new [TextEditingValue]s 
  -/// will be replaced with the [replacementString] which defaults to ``.
  -/// 
  +///
  +/// Instances of blacklisted characters found in the new [TextEditingValue]s
  +/// will be replaced with the [replacementString] which defaults to the empty
  +/// string.
  +///
   /// Since this formatter only removes characters from the text, it attempts to
   /// preserve the existing [TextEditingValue.selection] to values it would now
   /// fall at with the removed characters.
  -/// 
  +///
   /// See also:
  -///  
  -///  * [TextInputFormatter].
  -///  * [WhitelistingTextInputFormatter].
  +///
  +///  * [WhitelistingTextInputFormatter], which uses a whitelist instead of a
  +///    blacklist.
   class BlacklistingTextInputFormatter extends TextInputFormatter {
  +  /// Creates a formatter that prevents the insertion of blacklisted characters patterns.
  +  ///
  +  /// The [blacklistedPattern] must not be null.
     BlacklistingTextInputFormatter(
  -    this.blacklistedPattern, 
  -    {
  -      this.replacementString: '',
  -    }
  -  ) : assert(blacklistedPattern != null);
  +    this.blacklistedPattern, {
  +    this.replacementString: '',
  +  }) : assert(blacklistedPattern != null);
   
     /// A [Pattern] to match and replace incoming [TextEditingValue]s.
     final Pattern blacklistedPattern;
  
positive.code:     TextEditingValue newValue,
    ) {
      return _selectionAwareTextManipulation(
        newValue, 
        (String substring) {
          return whitelistedPattern
              .allMatches(substring)
  
negative.code:   }
    return new TextEditingValue(
      text: manipulatedText,
      selection: manipulatedSelection ?? const TextSelection.collapsed(offset: -1),
      composing: manipulatedText == value.text
          ? value.composing
          : TextRange.empty,
    );
  