anchor.diff:      return uses != null ? uses : const <ClassEntity>[];
     }
   
  -  /// Returns `true` if [cls] is mixed into a live class.
  -  bool isUsedAsMixin(ClassEntity cls) {
  -    return !mixinUsesOf(cls).isEmpty;
  -  }
  -
  -  /// Returns `true` if any live class that mixes in [cls] implements [type].
  -  bool hasAnySubclassOfMixinUseThatImplements(
  -      ClassEntity cls, ClassEntity type) {
  -    return mixinUsesOf(cls)
  -        .any((use) => hasAnySubclassThatImplements(use, type));
  -  }
  -
     /// Returns `true` if any live class that mixes in [mixin] is also a subclass
     /// of [superclass].
     bool hasAnySubclassThatMixes(ClassEntity superclass, ClassEntity mixin) {
  
positive.code: 
    /// Returns an iterable over the directly instantiated that implement [cls]
    /// possibly including [cls] itself, if it is live.
    Iterable<ClassElement> subtypesOf(ClassEntity cls);
  
    /// Returns an iterable over the live classes that implement [cls] _not_
    /// including [cls] if it is live.
    Iterable<ClassElement> strictSubtypesOf(ClassEntity cls);
  
    /// Returns the number of live classes that implement [cls] _not_
    /// including [cls] itself.
  
negative.code:     sideEffectsFreeElements.add(element);
    }
  
    void addFunctionCalledInLoop(Element element) {
      functionsCalledInLoop.add(element.declaration);
    }
  
    bool isCalledInLoop(Element element) {
      return functionsCalledInLoop.contains(element.declaration);
    }
  
    void registerCannotThrow(Element element) {
  