anchor.diff:  
     @override
     vm.ProgramInfoNode visitConstant(ConstantInfo info) {
  -    return infoNodesByName[info.name]!;
  +    return infoNodesByName[info.code.first.text!]!;
     }
   
     @override
  
positive.code:   void makeClassType(ClassTypeInfo classTypeInfo) {
      Info? parent = classTypeInfo.parent;
      if (parent != null) {
        vm.ProgramInfoNode? parentNode = infoNodesByName[parent.name];
        vm.ProgramInfoNode newClassType = program.makeNode(
            name: classTypeInfo.name,
            parent: parentNode!,
            type: vm.NodeType.other);
        newClassType.size = classTypeInfo.size;
        infoNodesByName[newClassType.name] = newClassType;
  
negative.code:   void makeClosure(ClosureInfo closureInfo) {
      Info? parent = closureInfo.parent;
      if (parent != null) {
        vm.ProgramInfoNode parentNode;
        if (parent.name == "<unnamed>" &&
            parent.kind == kindFromString('library')) {
          parentNode = infoNodesByName[unnamedLibraries[parent]]!;
        } else {
          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;
  