anchor.diff:  
     /// The simple name of the reference in its [parent].
     final String name;
  -
  -  /// The node accessor, used to read nodes lazily.
  -  /// Or `null` if a named container.
  -  ReferenceNodeAccessor? nodeAccessor;
  -
  -  /// The corresponding [AstNode], or `null` if a named container.
  -  /// TODO(scheglov) remove it
  -  AstNode? node;
   
     /// The corresponding [Element], or `null` if a named container.
     Element? element;
  
positive.code:     return map[name] ??= Reference._(this, name);
    }
  
    /// If the reference has element, and it is for the [node], return `true`.
    ///
    /// The element might be not `null`, but the node is different in case of
    /// duplicate declarations.
    bool hasElementFor(AstNode node) {
      if (element != null && this.node == node) {
        return true;
      } else {
        if (this.node == null) {
          this.node = node;
        }
        return false;
      }
    }
  
    void removeChild(String name) {
      _children!.remove(name);
    }
  
negative.code:   @override
    String toString() => parent == null ? 'root' : '$parent::$name';
  }
  