anchor.diff:        }
       }
   
  -    if (hardenedRules.isEmpty) return;
  -
  -    // Remove implied references to hardened rules. If a rule implies one
  -    // that's already hardened, we don't need to track the implication anymore.
  -    for (var chunk in _chunks) {
  -      chunk.rule.implies.removeAll(hardenedRules);
  -    }
  -
  -    // TODO(bob): There's some duplication between this and _hardenRules().
  -    // Clean up.
  -
  -    for (var i = 0; i < _chunks.length; i++) {
  -      var chunk = _chunks[i];
  -      if (chunk.rule == null) continue;
  -
  -      if (hardenedRules.contains(chunk.rule)) {
  -        chunk.harden();
  -
  -        // Now that this chunk is a hard split, we may be able to format up to
  -        // it as its own line. If so, the chunks will get removed, so reset
  -        // the loop counter.
  -        if (_checkForCompleteLine(i + 1)) i = -1;
  -      }
  -    }
  +    _hardenRules(hardenedRules, 0, _chunks.length);
     }
   }
  
positive.code:       nestingMap[nestingLevels[i]] = i;
      }
  
      for (var chunk in _chunks.take(length)) {
        chunk.nesting = nestingMap[chunk.nesting];
      }
    }
  
    /// Preemptively harden rules in the first [length] chunks if there will
    /// certainly be no solution that allows them to remain unsplit.
    ///
    /// For each rule, we look at the span of chunks it covers. If that range is
    /// longer than the page width, than the rule is preemptively hardened now.
  
negative.code:   SourceCode end() {
      if (_chunks.isNotEmpty) {
        _writeHardSplit();
        _splitLines();
      }
  
      // Be a good citizen, end with a newline.
  