anchor.diff:        }
       }
       cache[selectorMask] = result = (functions != null)
  -        ? newQuery(functions, selector, mask, compiler)
  -        : const FunctionSetQuery(const <Element>[]);
  +        ? new FullFunctionSetQuery(functions)
  +        : const EmptyFunctionSetQuery();
       return result;
     }
  -
  -  FunctionSetQuery newQuery(Iterable<Element> functions,
  -                            Selector selector,
  -                            TypeMask mask,
  -                            Compiler compiler) {
  -    return new FullFunctionSetQuery(functions);
  -  }
  -}
  -
  -class FunctionSetQuery {
  +}
  +
  +/// A set of functions that are the potential targets of all call sites sharing
  +/// the same receiver mask and selector.
  +abstract class FunctionSetQuery {
  +  const FunctionSetQuery();
  +
  +  /// Compute the type of all potential receivers of this function set.
  +  TypeMask computeMask(ClassWorld classWorld);
  +
  +  /// Returns all potential targets of this function set.
  +  Iterable<Element> get functions;
  +}
  +
  +class EmptyFunctionSetQuery implements FunctionSetQuery {
  +  const EmptyFunctionSetQuery();
  +
  +  @override
  +  TypeMask computeMask(ClassWorld classWorld) => const TypeMask.nonNullEmpty();
  +
  +  @override
  +  Iterable<Element> get functions => const <Element>[];
  +}
  +
  +class FullFunctionSetQuery implements FunctionSetQuery {
  +  @override
     final Iterable<Element> functions;
  -  TypeMask computeMask(ClassWorld classWorld) => const TypeMask.nonNullEmpty();
  -  const FunctionSetQuery(this.functions);
  -}
  -
  -class FullFunctionSetQuery extends FunctionSetQuery {
  +
     TypeMask _mask;
   
  -  /**
  -   * Compute the type of all potential receivers of this function set.
  -   */
  +  FullFunctionSetQuery(this.functions);
  +
  +  @override
     TypeMask computeMask(ClassWorld classWorld) {
       assert(classWorld.hasAnyStrictSubclass(classWorld.objectClass));
       if (_mask != null) return _mask;
  
positive.code:   }
  }
  
  class SelectorMask {
    final Selector selector;
    final TypeMask mask;
  
negative.code:         }),
          classWorld);
    }
  }
  