anchor.diff:  
       Map<String, dynamic> diffMap;
       if (oldFile.isAnalyzeSizeFile && newFile.isAnalyzeSizeFile) {
  +      var oldFileJson = oldFile.data as Map<String, dynamic>;
  +      var newFileJson = newFile.data as Map<String, dynamic>;
  +
  +      if (_hasDeferredInfo(oldFileJson) || _hasDeferredInfo(newFileJson)) {
  +        _isDeferredApp.value = deferredLoadingSupportEnabled;
  +
  +        if (!_hasDeferredInfo(oldFileJson)) {
  +          oldFileJson = _wrapInArtificialRoot(oldFileJson);
  +        } else if (!_hasDeferredInfo(newFileJson)) {
  +          newFileJson = _wrapInArtificialRoot(newFileJson);
  +        }
  +      }
  +
         final oldApkProgramInfo = ProgramInfo();
  -      final oldFileJson = oldFile.data as Map<String, dynamic>;
         _apkJsonToProgramInfo(
           program: oldApkProgramInfo,
           parent: oldApkProgramInfo.root,
  
positive.code:     }
  
      // If none of the children matched the diff tree type
      if (totalByteSize == 0) {
        return null;
      } else {
        return _buildNode(
  
negative.code:     changeOldDiffFile(oldFile);
      changeNewDiffFile(newFile);
  
      diffMap['n'] = isDeferredApp.value ? 'Entire App' : 'Root';
  
      // TODO(peterdjlee): Try to move the non-active tree generation to separate isolates.
      _combinedDiffTreeRoot = generateDiffTree(
        diffMap,
        DiffTreeType.combined,
        skipNodesWithNoByteSizeChange: !isDeferredApp.value,
      );
      _increasedDiffTreeRoot = generateDiffTree(
        diffMap,
        DiffTreeType.increaseOnly,
        skipNodesWithNoByteSizeChange: !isDeferredApp.value,
      );
      _decreasedDiffTreeRoot = generateDiffTree(
        diffMap,
        DiffTreeType.decreaseOnly,
        skipNodesWithNoByteSizeChange: !isDeferredApp.value,
      );
  
      changeDiffRoot(_activeDiffRoot);
  
      _processingNotifier.value = false;
    }
  
    Map<String, dynamic> _wrapInArtificialRoot(Map<String, dynamic> json) {
      json['n'] = mainNodeName;
      return <String, dynamic>{
        'n': artificialRootNodeName,
        'children': [json],
      };
    }
  
    ProgramInfoNode _apkJsonToProgramInfo({
  