anchor.diff:    /// Determines the set of rule values for a new [LinePrefix] one chunk longer
     /// than [prefix] whose rule on the new last chunk has [value].
     ///
  +  /// If [previousSplit] is not `null`, it is the rule for the chunk before
  +  /// the beginning of the line this prefix is extending. This will only be
  +  /// non-null if we are advancing the prefix by adding a chunk that does *not*
  +  /// split the line.
  +  ///
     /// Returns a map of [Rule]s to values for those rules for the values that
     /// span the prefix and suffix of the [LinePrefix].
  -  Map<Rule, int> _advancePrefix(LinePrefix prefix, int value) {
  +  Map<Rule, int> _advancePrefix(LinePrefix prefix, int value,
  +      [Rule previousSplit]) {
       // Get the rules that appear in both in and after the new prefix. These are
       // the rules that already have values that the suffix needs to honor.
       var prefixRules = _prefixRules[prefix.length + 1];
  
positive.code:     assert(value >= 0);
  
      var chunk = _chunks[prefix.length];
      var ruleValues = _advancePrefix(prefix, value);
  
      // If the rule causes this chunk to split, recurse and find the best
      // solution for the suffix following this chunk.
      if (!chunk.rule.isSplit(value, chunk)) {
        // If this chunk bumps us past the page limit and we already have a
        // solution that fits, no solution after this chunk will beat that, so
        // stop looking.
  
negative.code: 
        // We didn't split here, so add this chunk and its rule value to the
        // prefix and continue on to the next.
        var ruleValues = _advancePrefix(prefix, value, previousSplit);
        var added = prefix.addChunk(ruleValues);
        _tryChunkRuleValues(solution, added, length);
        return;
      }
  
      var ruleValues = _advancePrefix(prefix, value);
  
      if (!chunk.isInExpression) {
        // The chunk is at a statement boundary, so we don't have to worry about
        // nesting stacks.
        _tryLongerPrefix(solution, prefix, prefix.addStatement(ruleValues));
      } else {
        // The nesting stack has changed, so return all of the possible ways it
        // can be different.
  