anchor.diff:      }
       return super.fold(left, right);
     }
  +
  +  @override
  +  BigInt foldInts(BigInt left, BigInt right) {
  +    if (right < BigInt.zero) return null;
  +    return left >> right.toInt();
  +  }
  +
  +  @override
  +  apply(left, right) => left >> right;
   }
   
   abstract class BinaryBoolOperation implements BinaryOperation {
     const BinaryBoolOperation();
  +
  +  @override
     ConstantValue fold(ConstantValue left, ConstantValue right) {
       if (left.isBool && right.isBool) {
         BoolConstantValue leftBool = left;
  
positive.code: }
  
  class NegateOperation implements UnaryOperation {
    final String name = 'negate';
    const NegateOperation();
    ConstantValue fold(ConstantValue constant) {
      if (constant.isInt) {
        IntConstantValue intConstant = constant;
        return createInt(-intConstant.intValue);
      }
      if (constant.isDouble) {
        DoubleConstantValue doubleConstant = constant;
        return createDouble(-doubleConstant.doubleValue);
      }
      return null;
    }
  }
  
  class JavaScriptNegateOperation implements UnaryOperation {
    final NegateOperation dartNegateOperation = const NegateOperation();
  
    const JavaScriptNegateOperation();
  
    String get name => dartNegateOperation.name;
  
    ConstantValue fold(ConstantValue constant) {
      if (constant.isInt) {
        IntConstantValue intConstant = constant;
        if (intConstant.intValue == BigInt.zero) {
          return createDouble(-0.0);
        }
      }
      return dartNegateOperation.fold(constant);
    }
  }
  
  class NotOperation implements UnaryOperation {
    final String name = '!';
    const NotOperation();
    ConstantValue fold(ConstantValue constant) {
      if (constant.isBool) {
        BoolConstantValue boolConstant = constant;
  
negative.code: }
  
  class BitNotOperation implements UnaryOperation {
    @override
    final String name = '~';
  
    const BitNotOperation();
  
    @override
    ConstantValue fold(ConstantValue constant) {
      if (isInt(constant)) {
        // In JavaScript we don't check for -0 and treat it as if it was zero.
  