anchor.diff:    dynamic value;
     List<CompileDiDependencyMetadata> diDeps;
     CompileTypeMetadata(
  -      {Type runtime,
  -      String name,
  -      String moduleUrl,
  -      String prefix,
  +      {this.runtime,
  +      this.name,
  +      this.moduleUrl,
  +      this.prefix,
         bool isHost,
  -      dynamic value,
  -      List<CompileDiDependencyMetadata> diDeps}) {
  -    this.runtime = runtime;
  -    this.name = name;
  -    this.moduleUrl = moduleUrl;
  -    this.prefix = prefix;
  -    this.isHost = isHost == true;
  -    this.value = value;
  -    this.diDeps = diDeps ?? [];
  -  }
  +      this.value,
  +      List<CompileDiDependencyMetadata> diDeps})
  +      : this.isHost = isHost == true,
  +        this.diDeps = diDeps ?? const [];
  +
     static CompileTypeMetadata fromJson(Map<String, dynamic> data) {
       return new CompileTypeMetadata(
  -        name: data["name"],
  -        moduleUrl: data["moduleUrl"],
  -        prefix: data["prefix"],
  -        isHost: data["isHost"],
  -        value: data["value"],
  +        name: data['name'],
  +        moduleUrl: data['moduleUrl'],
  +        prefix: data['prefix'],
  +        isHost: data['isHost'],
  +        value: data['value'],
           diDeps:
  -            _arrayFromJson(data["diDeps"], CompileDiDependencyMetadata.fromJson)
  +            _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)
                   as List<CompileDiDependencyMetadata>);
     }
   
  
positive.code: 
  class CompilePipeMetadata implements CompileMetadataWithType {
    @override
    CompileTypeMetadata type;
    String name;
    bool pure;
    List<LifecycleHooks> lifecycleHooks;
    CompilePipeMetadata(
        {CompileTypeMetadata type,
        String name,
        bool pure,
        List<LifecycleHooks> lifecycleHooks}) {
      this.type = type;
      this.name = name;
      this.pure = pure ?? true;
      this.lifecycleHooks = lifecycleHooks ?? [];
    }
    @override
    CompileIdentifierMetadata get identifier => this.type;
  
    static CompilePipeMetadata fromJson(Map<String, dynamic> data) {
      return new CompilePipeMetadata(
          type: data["type"] != null
              ? CompileTypeMetadata.fromJson(data["type"] as Map<String, dynamic>)
              : data["type"],
          name: data["name"],
          pure: data["pure"]);
    }
  
    @override
    Map<String, dynamic> toJson() =>
        {"class": "Pipe", "type": type?.toJson(), "name": name, "pure": pure};
  }
  
  var _COMPILE_METADATA_FROM_JSON = {
    "Directive": CompileDirectiveMetadata.fromJson,
    "Pipe": CompilePipeMetadata.fromJson,
    "Type": CompileTypeMetadata.fromJson,
    "Provider": CompileProviderMetadata.fromJson,
    "Identifier": CompileIdentifierMetadata.fromJson,
    "Factory": CompileFactoryMetadata.fromJson,
  };
  
  dynamic _arrayFromJson(List<dynamic> obj, dynamic fn(Map<String, dynamic> a)) {
  
negative.code: 
    static CompileTemplateMetadata fromJson(Map<String, dynamic> data) {
      return new CompileTemplateMetadata(
          encapsulation: data['encapsulation'] != null
              ? ViewEncapsulation.values[data['encapsulation']]
              : data['encapsulation'],
          template: data['template'],
          templateUrl: data['templateUrl'],
          preserveWhitespace: data['preserveWhitespace'] ?? true,
          styles: data['styles'] as List<String>,
          styleUrls: data['styleUrls'] as List<String>,
          ngContentSelectors: data['ngContentSelectors'] as List<String>);
    }
  
    Map<String, dynamic> toJson() {
      Map<String, dynamic> res = {
        'encapsulation': encapsulation?.index,
        'template': template,
        'templateUrl': templateUrl,
        'styles': styles,
        'styleUrls': styleUrls,
        'ngContentSelectors': ngContentSelectors
      };
      if (preserveWhitespace == false) res['preserveWhitespace'] = false;
      return res;
    }
  }
  