anchor.diff:    return sb.toString();
   }
   
  -/**
  - * If [s] is [null] returns empty string, otherwise returns [s] as is.
  - */
  +/// Returns the empty string if [s] is null, otherwise returns [s] as is.
   String nullToEmpty(String s) => s == null ? '' : s;
   
  -/**
  - * If [s] is an empty string returns [null], otherwise returns [s] as is.
  - */
  +/// Returns `null` if [s] is empty, otherwise returns [s] as is.
   String emptyToNull(String s) => s == '' ? null : s;
   
  -/**
  - * Concatenates [s] to itself a given number of [times]. Empty and null
  - * strings will always result in empty and null strings respectively no matter
  - * how many [times] they are [repeat]ed.
  - *
  - * If [times] is negative, returns the [flip]ped string repeated given number
  - * of [times].
  - */
  +/// Concatenates [s] to itself a given number of [times]. Empty and null
  +/// strings will always result in empty and null strings respectively no matter
  +/// how many [times] they are [repeat]ed.
  +///
  +/// If [times] is negative, returns the [flip]ped string repeated given number
  +/// of [times].
   String repeat(String s, int times) {
     if (s == null || s == '') return s;
     if (times < 0) {
  
positive.code: 
  library quiver.strings;
  
  /**
   * Returns [true] if [s] is either null, empty or is solely made of whitespace
   * characters (as defined by [String.trim]).
   */
  bool isBlank(String s) => s == null || s.trim().isEmpty;
  
  /**
   * Returns [true] if [s] is either null or empty.
   */
  bool isEmpty(String s) => s == null || s.isEmpty;
  
  /**
   * Returns a string with characters from the given [s] in reverse order.
   */
  String flip(String s) {
    if (s == null || s == '') return s;
    StringBuffer sb = new StringBuffer();
  
negative.code:     rune == 0x3000 ||
      rune == 0xFEFF);
  
  /// Returns a [String] of length [width] padded with the same number of
  /// characters on the left and right from [fill].  On the right, characters are
  /// selected from [fill] starting at the end so that the last character in [fill]
  /// is the last character in the result. [fill] is repeated if neccessary to pad.
  ///
  /// Returns [input] if `input.length` is equal to or greater than width. [input]
  /// can be `null` and is treated as an empty string.
  ///
  /// If there are an odd number of characters to pad, then the right will be
  /// padded with one more than the left.
  String center(String input, int width, [String fill = ' ']) {
    if (fill?.length != 1) {
      throw new ArgumentError('fill must be exactly 1 character');
  