anchor.diff:    @override
     Map<String, dynamic> toJson() => {
           // Note: Runtime type can't be serialized...
  -        "class": "Type",
  -        "name": this.name,
  -        "moduleUrl": this.moduleUrl,
  -        "prefix": this.prefix,
  -        "isHost": this.isHost,
  -        "value": this.value,
  -        "diDeps": _arrayToJson(this.diDeps)
  +        'class': 'Type',
  +        'name': name,
  +        'moduleUrl': moduleUrl,
  +        'prefix': prefix,
  +        'isHost': isHost,
  +        'value': value,
  +        'diDeps': _arrayToJson(diDeps)
         };
   }
   
  +/// Provides metadata for Query, ViewQuery, ViewChildren,
  +/// ContentChild and ContentChildren decorators.
   class CompileQueryMetadata {
  +  /// List of types or tokens to match.
     List<CompileTokenMetadata> selectors;
  +
  +  /// TODO: unused, deprecate.
     bool descendants;
  +
  +  /// Set when querying for first instance that matches selectors.
     bool first;
  +
  +  /// Name of class member on the component to update with query result.
     String propertyName;
  +
  +  /// Optional type to read for given match.
  +  ///
  +  /// When we match an element in the template, it typically returns the
  +  /// component. Using read: parameter we can specifically query for
  +  /// ViewContainer or TemplateRef for the node.
     CompileTokenMetadata read;
  +
     CompileQueryMetadata(
  -      {List<CompileTokenMetadata> selectors,
  +      {this.selectors,
         bool descendants,
         bool first,
  -      String propertyName,
  -      CompileTokenMetadata read}) {
  -    this.selectors = selectors;
  -    this.descendants = descendants == true;
  -    this.first = first == true;
  -    this.propertyName = propertyName;
  -    this.read = read;
  -  }
  +      this.propertyName,
  +      this.read})
  +      : this.descendants = descendants == true,
  +        this.first = first == true;
  +
     static CompileQueryMetadata fromJson(Map<String, dynamic> data) {
       return new CompileQueryMetadata(
           selectors:
  -            _arrayFromJson(data["selectors"], CompileTokenMetadata.fromJson)
  +            _arrayFromJson(data['selectors'], CompileTokenMetadata.fromJson)
                   as List<CompileTokenMetadata>,
  -        descendants: data["descendants"],
  -        first: data["first"],
  -        propertyName: data["propertyName"],
  -        read: _objFromJson(data["read"], CompileTokenMetadata.fromJson));
  +        descendants: data['descendants'],
  +        first: data['first'],
  +        propertyName: data['propertyName'],
  +        read: _objFromJson(data['read'], CompileTokenMetadata.fromJson));
     }
   
     Map<String, dynamic> toJson() {
       return {
  -      "selectors": _arrayToJson(this.selectors),
  -      "descendants": this.descendants,
  -      "first": this.first,
  -      "propertyName": this.propertyName,
  -      "read": _objToJson(this.read)
  +      'selectors': _arrayToJson(selectors),
  +      'descendants': descendants,
  +      'first': first,
  +      'propertyName': propertyName,
  +      'read': _objToJson(read)
       };
     }
   }
  
positive.code: import "package:angular2/src/compiler/selector.dart" show CssSelector;
  import "package:angular2/src/core/change_detection/change_detection.dart"
      show ChangeDetectionStrategy;
  import "package:angular2/src/core/metadata/lifecycle_hooks.dart"
      show LifecycleHooks, LIFECYCLE_HOOKS_VALUES;
  import "package:angular2/src/core/metadata/view.dart" show ViewEncapsulation;
  import "package:angular2/src/facade/exceptions.dart" show BaseException;
  
  import "compiler_utils.dart";
  import "url_resolver.dart" show getUrlScheme;
  
  // group 1: "property" from "[property]"
  // group 2: "event" from "(event)"
  var HOST_REG_EXP = new RegExp(r'^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$');
  
  abstract class CompileMetadataWithIdentifier {
  
negative.code:           ? '${identifier.name}|${identifier.moduleUrl}|${identifierIsInstance}'
            : null;
      } else {
        return value;
      }
    }
  
    bool equalsTo(CompileTokenMetadata token2) {
      var rk = runtimeCacheKey;
      var ak = assetCacheKey;
      return (rk != null && rk == token2.runtimeCacheKey) ||
          (ak != null && ak == token2.assetCacheKey);
    }
  