anchor.diff:  
       var result = new AllInfo();
       var elements = json['elements'];
  -    result.libraries
  -        .addAll((elements['library'] as Map).values.map(parseLibrary));
  -    result.classes.addAll((elements['class'] as Map).values.map(parseClass));
  -    result.functions
  -        .addAll((elements['function'] as Map).values.map(parseFunction));
  +    // TODO(srawlins): Since only the Map values are being extracted below,
  +    // replace `as` with `cast` when `cast` becomes available in Dart 2.0:
  +    //
  +    //     .addAll(elements['library'].values.cast<Map>().map(parseLibrary));
  +    result.libraries.addAll(
  +        (elements['library'] as Map).values.map((l) => parseLibrary(l)));
  +    result.classes
  +        .addAll((elements['class'] as Map).values.map((c) => parseClass(c)));
  +    result.functions.addAll(
  +        (elements['function'] as Map).values.map((f) => parseFunction(f)));
   
       // TODO(het): Revert this when the dart2js with the new codec is in stable
       if (elements['closure'] != null) {
  -      result.closures
  -          .addAll((elements['closure'] as Map).values.map(parseClosure));
  -    }
  -    result.fields.addAll((elements['field'] as Map).values.map(parseField));
  -    result.typedefs
  -        .addAll((elements['typedef'] as Map).values.map(parseTypedef));
  -    result.constants
  -        .addAll((elements['constant'] as Map).values.map(parseConstant));
  +      result.closures.addAll(
  +          (elements['closure'] as Map).values.map((c) => parseClosure(c)));
  +    }
  +    result.fields
  +        .addAll((elements['field'] as Map).values.map((f) => parseField(f)));
  +    result.typedefs.addAll(
  +        (elements['typedef'] as Map).values.map((t) => parseTypedef(t)));
  +    result.constants.addAll(
  +        (elements['constant'] as Map).values.map((c) => parseConstant(c)));
   
       var idMap = new SplayTreeMap<String, Info>(compareNatural);
       for (var f in result.functions) {
  
positive.code:       ..type = json['type']
        ..returnType = json['returnType']
        ..inferredReturnType = json['inferredReturnType']
        ..parameters = (json['parameters'] as List).map(parseParameter).toList()
        ..code = json['code']
        ..sideEffects = json['sideEffects']
        ..modifiers =
            parseModifiers(new Map<String, bool>.from(json['modifiers']))
        ..closures = (json['children'] as List).map(parseId).toList()
        ..measurements = parseMeasurements(json['measurements']);
    }
  
  
negative.code:       ..code = json['code']
        ..isConst = json['const'] ?? false
        ..initializer = parseId(json['initializer'])
        ..closures = (json['children'] as List).map((c) => parseId(c)).toList();
    }
  
    ConstantInfo parseConstant(Map json) {
  