anchor.diff:  
     int get length => members.length;
   
  -  TrieNode(this.key, [this.depth = 0]);
  +  TrieNode(this.key, this.depth);
   
     String toString() => 'TrieNode(#$length)';
   }
   
   void enter(Record record, int depth, TrieNode root) {
  -  root.members.add(record);
  -  if (depth >= record.stack.length) return;
  +  // Cluster on printed stack.
  +  if (depth >= stackPrintLength || depth >= record.stack.length) {
  +    root.members.add(record);
  +    return;
  +  }
     var key = record.stack[depth];
     var node = root.map[key] ??= new TrieNode(key, depth + 1);
     enter(record, depth + 1, node);
  
positive.code:     records.addAll(parse(text));
    }
  
    var trie = new TrieNode(null);
    for (var record in records) {
      enter(record, 0, trie);
    }
  
negative.code: }
  
  trieLeaves(node) sync* {
    if (node.members.isNotEmpty) {
      yield node;
    }
    for (var v in node.map.values) {
      yield* trieLeaves(v);
    }
  }
  