anchor.diff:      return false;
     }
   
  -  bool canUseSelfForInterceptor(
  -      HInstruction receiver, Set<ClassEntity> interceptedClasses) {
  +  bool canUseSelfForInterceptor(HInstruction receiver,
  +      {Set<ClassEntity> interceptedClasses}) {
       if (receiver.canBePrimitive(_abstractValueDomain)) {
         // Primitives always need interceptors.
         return false;
       }
  -    if (receiver.canBeNull(_abstractValueDomain) &&
  -        interceptedClasses.contains(_commonElements.jsNullClass)) {
  -      // Need the JSNull interceptor.
  -      return false;
  +    if (receiver.canBeNull(_abstractValueDomain)) {
  +      if (interceptedClasses == null ||
  +          interceptedClasses.contains(_commonElements.jsNullClass)) {
  +        // Need the JSNull interceptor.
  +        return false;
  +      }
       }
   
       // All intercepted classes extend `Interceptor`, so if the receiver can't be
  
positive.code:     return result;
    }
  
    bool visitInterceptor(HInterceptor node) {
      if (node.isConstant()) return false;
  
      // Specialize the interceptor with set of classes it intercepts, considering
      // all uses.  (The specialized interceptor has a shorter dispatch chain).
  
negative.code:     // implement `hashCode`. But in this example, `a.hashCode` is only reached
      // if `a.length` succeeds, which is indicated by the hashCode receiver being
      // a HTypeKnown instruction.
  
      Set<ClassEntity> interceptedClasses;
      HInstruction dominator = findDominator(node.usedBy);
  