anchor.diff:    }
   }
   
  -int _idFromSerializedId(String serialiedId) =>
  +int _idFromSerializedId(String serializedId) =>
       int.parse(serializedId.substring(serializedId.indexOf('/') + 1));
   
  -String _kindFromSerializedId(String serializedId) =>
  +InfoKind _kindFromSerializedId(String serializedId) =>
       _kindFromString(serializedId.substring(0, serializedId.indexOf('/')));
   
   InfoKind _kindFromString(String kind) {
  
positive.code:   }
  
    LibraryInfo parseLibrary(Map json) {
      var result = parseId(json['id'])
          ..name = json['name']
          ..uri = Uri.parse(json['canonicalUri'])
          ..outputUnit = parseId(json['outputUnit'])
          ..size = json['size'];
      assert(result is LibraryInfo);
      for (var child in json['children'].map(parseId)) {
        if (child is FunctionInfo) {
          result.topLevelFunctions.add(child);
  
negative.code:       ..closures = json['children'].map(parseId).toList();
    }
  
    TypedefInfo parseTypedef(Map json) {
      TypedefInfo result = parseId(json['id']);
      return result..name = json['name']
        ..type = json['type']
        ..size = 0;
    }
  
    ProgramInfo parseProgram(Map json) =>
        new ProgramInfo()..size = json['size'];
  
    FunctionInfo parseFunction(Map json) {
      FunctionInfo result = parseId(json['id']);
      return result..name = json['name']
        ..outputUnit = parseId(json['outputUnit'])
        ..size = json['size']
        ..type = json['type']
  