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: 
    HInstruction tryComputeConstantInterceptor(
        HInstruction input, Set<ClassEntity> interceptedClasses) {
      ClassEntity constantInterceptor = tryComputeConstantInterceptorFromType(
          input.instructionType, interceptedClasses);
  
  