anchor.diff:  // file.
   
   abstract class TreeNode<T extends TreeNode<T>> {
  -  T parent;
  +  T? parent;
   
     final List<T> children = [];
   
  
positive.code: 
    T get root {
      if (_root != null) {
        return _root;
      }
      if (parent == null) return _root = this;
      return _root = parent.root;
    }
  
    T _root;
  
    /// The level (0-based) of this tree node in the tree.
    int get level {
      if (_level != null) {
        return _level;
      }
      if (parent == null) return _level = 0;
      return _level = 1 + parent.level;
    }
  
    int _level;
  
    /// Whether the tree table node is expandable.
    bool get isExpandable => children.isNotEmpty;
  
negative.code:   ///
    /// The runtime of this method is O(level * tree width). The worst case
    /// scenario is searching for a very deep level in a very wide tree.
    T? _childNodeAtLevelWithCondition(
      int level,
      T traversalCondition(T currentNode, int levelWithOffset),
    ) {
  