anchor.diff:      info.classTypes.forEach(visitClassType);
       info.typedefs.forEach(makeTypedef);
       info.typedefs.forEach(visitTypedef);
  -    return infoNodesByName[info.name]!;
  +    return infoNodesByName[info.name] ??
  +        infoNodesByName[unnamedLibraries[info]]!;
     }
   
     @override
  
positive.code:   void makeClosure(ClosureInfo closureInfo) {
      Info? parent = closureInfo.parent;
      if (parent != null) {
        vm.ProgramInfoNode? parentNode = infoNodesByName[parent.name];
        vm.ProgramInfoNode newClosure = program.makeNode(
            name: closureInfo.name,
            parent: parentNode!,
            // ProgramInfo trees consider closures and functions to both be of the functionNode type.
            type: vm.NodeType.functionNode);
        newClosure.size = closureInfo.size;
  
negative.code: 
    void makeLibrary(LibraryInfo libraryInfo) {
      String packageName = libraryGroupName(libraryInfo) ?? libraryInfo.name;
      vm.ProgramInfoNode parentNode = infoNodesByName[packageName]!;
      String libraryName = libraryInfo.name;
      if (libraryName == '<unnamed>') {
        libraryName = longName(libraryInfo, useLibraryUri: true, forId: true);
        unnamedLibraries[libraryInfo] = libraryName;
      }
      vm.ProgramInfoNode newLibrary = program.makeNode(
          name: libraryName, parent: parentNode, type: vm.NodeType.libraryNode);
      newLibrary.size = libraryInfo.size;
      parentNode.children[newLibrary.name] = newLibrary;
      infoNodesByName[newLibrary.name] = newLibrary;
  