anchor.diff:  
     /// Adds any declaration and superclass information that is needed to answer a
     /// query on [type] that matches [options]. Also adds symbols, getters, and
  -  /// setters if [includeAccessors] is true.
  +  /// setters if [includeAccessors] is true. If [results] is not null, it will
  +  /// be filled up with the members that match the query.
     void runQuery(ClassElement type, QueryOptions options,
  -      {bool includeAccessors: true}) {
  +      {bool includeAccessors: true, List results}) {
       if (type.type.isObject) return; // We don't include Object in query results.
       var id = _typeFor(type);
       var parent = type.supertype != null ? type.supertype.element : null;
  
positive.code:         var name = v.displayName;
          if (options.matches != null && !options.matches(name)) continue;
          if (skipBecauseOfAnnotations(a)) continue;
          generator.addDeclaration(id, name, _typeFor(a.type.returnType.element),
              isProperty: true, isFinal: v.isFinal,
              annotations: _copyAnnotations(a));
  
negative.code:         var name = f.displayName;
          if (options.matches != null && !options.matches(name)) continue;
          if (skipBecauseOfAnnotations(f)) continue;
          if (results != null) results.add(f);
          generator.addDeclaration(id, name, _typeFor(f.type.element),
              isField: true, isFinal: f.isFinal,
              annotations: _copyAnnotations(f));
  