anchor.diff:    // We want the outcome of bit-operations to be positive. We use the unsigned
     // shift operator to achieve this.
     visitBitInvokeBinary(HBinaryBitOp node, String op) {
  -    if (node.builtin) {
  +    if (node.builtin && requiresUintConversion(node)) {
         beginExpression(unsignedShiftPrecedences.precedence);
         int oldPrecedence = this.expectedPrecedence;
         this.expectedPrecedence = JSPrecedence.SHIFT_PRECEDENCE;
  
positive.code: 
    bool isGenerateAtUseSite(HInstruction instruction) {
      return generateAtUseSite.contains(instruction);
    }
  
    SsaCodeGenerator(this.backend,
  
negative.code:   // We want the outcome of bit-operations to be positive. We use the unsigned
    // shift operator to achieve this.
    visitBitInvokeUnary(HInvokeUnary node, String op) {
      if (node.builtin && requiresUintConversion(node)) {
        beginExpression(unsignedShiftPrecedences.precedence);
        int oldPrecedence = this.expectedPrecedence;
        this.expectedPrecedence = JSPrecedence.SHIFT_PRECEDENCE;
  