anchor.diff:  // Apparently ~~ is faster than Math.floor (see https://coderwall.com/p/9b6ksa/is-faster-than-math-floor)
   let fastIntFloor expr =
       let inner = makeUnOp None Any expr UnaryNotBitwise
  -    makeUnOp None (Number(Int32, NumberInfo.Empty)) inner UnaryNotBitwise
  +    makeUnOp None Int32.Number inner UnaryNotBitwise
   
   let stringToInt (_com: ICompiler) (_ctx: Context) r targetType (args: Expr list): Expr =
       Helper.GlobalCall("int", targetType, args, memb="parse", ?loc=r)
  
positive.code: //        // | Builtin (BclDateTime|BclDateTimeOffset) -> "dateHash"
  //        | DeclaredType _ -> "safeHash"
  //        | _ -> "identityHash"
  //    Helper.LibCall(com, "Util", methodName, Number(Int32, NumberInfo.Empty), [arg], ?loc=r)
  
  let structuralHash (com: ICompiler) r (arg: Expr) =
      let t = Number(Int32, NumberInfo.Empty)
      getImmutableAttachedMemberWith r t arg "hashCode"
  //    let methodName =
  //        match arg.Type with
  
negative.code:     | "Equals", Some x, [y] | "Equals", None, [x; y] ->
          makeEqOp r x y BinaryEqual |> Some
      | "Equals", Some x, [y; kind] | "Equals", None, [x; y; kind] ->
          let left = Helper.LibCall(com, "String", "compareWith", Int32.Number, [x; y; kind])
          makeEqOp r left (makeIntConst 0) BinaryEqual |> Some
      | "GetEnumerator", Some c, _ -> stringToCharSeq c |> getEnumerator com r t |> Some
      | ("Contains"|"StartsWith"|"EndsWith" as meth), Some c, arg::_ ->
  