anchor.diff:    bool methodUsesReceiverArgument(FunctionElement function) {
       assert(backend.isInterceptedMethod(function));
       ClassElement clazz = function.enclosingClass.declaration;
  -    return clazz.isSubclassOf(backend.jsInterceptorClass) || 
  +    return clazz.isSubclassOf(backend.jsInterceptorClass) ||
              classWorld.isUsedAsMixin(clazz);
     }
   
  
positive.code:     AbstractBool boolifiedValue = lattice.boolify(conditionValue);
  
      if (boolifiedValue == AbstractBool.True) {
        InvokeContinuation invoke = new InvokeContinuation(trueCont, []);
        replaceSubtree(node, invoke);
        push(invoke);
        return;
      }
      if (boolifiedValue == AbstractBool.False) {
        InvokeContinuation invoke = new InvokeContinuation(falseCont, []);
        replaceSubtree(node, invoke);
        push(invoke);
  
negative.code:   void visitBranch(Branch node) {
      IsTrue isTrue = node.condition;
      AbstractValue conditionCell = getValue(isTrue.value.definition);
      AbstractBool boolifiedValue = lattice.boolify(conditionCell);
      switch (boolifiedValue) {
        case AbstractBool.Nothing:
          break;
        case AbstractBool.True:
          setReachable(node.trueContinuation.definition);
          break;
        case AbstractBool.False:
          setReachable(node.falseContinuation.definition);
          break;
        case AbstractBool.Maybe:
          setReachable(node.trueContinuation.definition);
          setReachable(node.falseContinuation.definition);
          break;
      }
    }
  
  