anchor.diff:    }
   
     visitNot(HNot node) {
  +    bool isBuiltinRelational(HInstruction instruction) {
  +      if (instruction is !HRelational) return false;
  +      HRelational relational = instruction;
  +      return relational.builtin;
  +    }
  +
       assert(node.inputs.length == 1);
       HInstruction input = node.inputs[0];
       if (input is HBoolify && isGenerateAtUseSite(input)) {
  
positive.code:         ">"  : "<=",
          ">=" : "<"
        };
        visitInvokeBinary(input,
                          inverseOperator[input.operation.name.stringValue]);
      } else {
        beginExpression(JSPrecedence.PREFIX_PRECEDENCE);
        buffer.add('!');
  
negative.code:       use(input.inputs[0], JSPrecedence.EQUALITY_PRECEDENCE);
        buffer.add(' !== true');
        endExpression(JSPrecedence.EQUALITY_PRECEDENCE);
      } else if (isBuiltinRelational(input) && isGenerateAtUseSite(input)) {
        Map<String, String> inverseOperator = const <String>{
          "==" : "!=",
          "!=" : "==",
  