anchor.diff:      // });
     }
   
  -  void _onRootChanged(TreemapNode newRoot) {
  +  void _onRootChanged(TreemapNode? newRoot) {
       setState(() {
         root = newRoot;
       });
  
positive.code: 
  class Symbol {
    const Symbol({
      @required this.name,
      @required this.size,
      this.libraryUri,
      this.className,
    })  : assert(name != null),
          assert(size != null);
  
    static Symbol fromMap(Map<String, dynamic> json) {
      return Symbol(
        name: json['n'] as String,
        size: json['s'] as int,
        className: json['c'] as String,
        libraryUri: json['l'] as String,
      );
    }
  
    final String name;
    final int size;
    final String libraryUri;
    final String className;
  
    List<String> get parts {
      return <String>[
        if (libraryUri != null) ...libraryUri.split('/') else '@stubs',
        if (className != null && className.isNotEmpty) className,
        name,
      ];
    }
  
negative.code: 
    @override
    Widget build(BuildContext context) {
      if (_sizes == null) {
        return Column(
          children: [
            const SizedBox(height: denseRowSpacing),
  