anchor.diff:    }
   
     FunctionInfo visitFunction(ir.FunctionNode function,
  -      {FunctionEntity functionEntity}) {
  -    var parent = function.parent;
  -    String name = parent.toStringInternal();
  +      {FunctionEntity functionEntity, LocalFunctionInfo localFunctionInfo}) {
  +    final parent = function.parent;
  +    String name =
  +        parent is ir.LocalFunction ? 'call' : parent.toStringInternal();
       bool isConstructor = parent is ir.Constructor;
       bool isFactory = parent is ir.Procedure && parent.isFactory;
       // Kernel `isStatic` refers to static members, constructors, and top-level
  
positive.code:   }
  
    ClosureInfo visitClosureClass(ClassEntity element) {
      ClosureInfo closureInfo = ClosureInfo(
          name: element.name,
          outputUnit: _unitInfoForClass(element),
          size: dumpInfoTask.sizeOf(element));
      kernelInfo.state.entityToInfo[element] = closureInfo;
  
      FunctionEntity callMethod = closedWorld.elementEnvironment
          .lookupClassMember(element, Identifiers.call);
  
      FunctionInfo functionInfo = visitFunction(callMethod, element.name);
      if (functionInfo == null) return null;
  
      closureInfo.function = functionInfo;
      functionInfo.parent = closureInfo;
      closureInfo.treeShakenStatus = TreeShakenStatus.Live;
  
      kernelInfo.state.info.closures.add(closureInfo);
      return closureInfo;
    }
  
    // TODO(markzipan): [parentName] is used for disambiguation, but this might
  
negative.code:     int size = dumpInfoTask.sizeOf(function);
      // TODO(sigmund): consider adding a small info to represent unreachable
      // code here.
      var compareName = function.name;
      if (function.isConstructor) {
        compareName = compareName == ""
  