anchor.diff:      if (_hasAnnotation(p, "Query")) {
         query =
             _createQueryMetadata(_getAnnotation(p, "Query"), null, first: false);
  +      _reportDeprecation(classDecl, query);
       }
       if (_hasAnnotation(p, "ContentChildren")) {
         query = _createQueryMetadata(_getAnnotation(p, "ContentChildren"), null,
             defaultDescendantsValue: true, first: false);
  +      _reportDeprecation(classDecl, query);
       }
   
       var viewQuery;
       if (_hasAnnotation(p, "ViewQuery")) {
         viewQuery = _createQueryMetadata(_getAnnotation(p, "ViewQuery"), null,
             first: false);
  +      _reportDeprecation(classDecl, viewQuery);
       }
       if (_hasAnnotation(p, "ViewChildren")) {
         viewQuery = _createQueryMetadata(_getAnnotation(p, "ViewChildren"), null,
             defaultDescendantsValue: true, first: false);
  +      _reportDeprecation(classDecl, viewQuery);
       }
       if (token == null) {
         throw new ArgumentError(
  
positive.code:           moduleUrl: toAssetUri(_assetId),
            name: node.name.toString(),
            diDeps: _getCompileDiDependencyMetadata(
                node.functionExpression.parameters, {}),
            runtime: null // Intentionally `null`, cannot be provided here.
            );
      }
  
negative.code:         query: query,
          viewQuery: viewQuery);
    }).toList();
  }
  
  final Logger _deprecationLogger = new Logger('angular2.transformer');
  void _reportDeprecation(
      ClassDeclaration classDecl, CompileQueryMetadata query) {
    String source = classDecl == null
        ? '${query?.propertyName}'
        : 'in class ${classDecl.name.name}';
    _deprecationLogger.warning('Queries inside constructors are deprecated, '
        'please replace with query annotations on fields $source');
  }
  
  Annotation _getAnnotation(p, String attrName) =>
  