anchor.diff:      // | CoreCons "List" "default" [] -> makeJsObject r []
       // | CoreMeth "List" "ofArray" [Fields caseRule fields] -> makeJsObject r fields
       // | _ ->
  -        [keyValueList; caseRule |> int |> makeIntConst]
  -        |> coreCall_ Any "Util" "createObj"
  +        Helper.CoreCall("Util", "createObj", Any, [keyValueList; caseRule |> int |> makeIntConst])
   
   let fableCoreLib (com: ICompiler) r t (i: CallInfo) (thisArg: Expr option) (args: Expr list) =
       match i.CompiledName, args with
       | "importDynamic", _ ->
  -        globalCall r t "import" None thisArg args i.ArgTypes |> Some
  +        Helper.GlobalCall("import", t, args, i.ArgTypes, ?thisArg=thisArg, ?loc=r) |> Some
       | Naming.StartsWith "import" suffix, _ ->
           let fail() =
               sprintf "Fable.Core.JsInterop.import%s only accepts literal strings" suffix
  
positive.code:     | "Abs", _ ->
          match resolveArgTypes i.ArgTypes i.GenericArgs with
          | Builtin(BclInt64 | BclBigInt as bt)::_  ->
              coreCall r t (coreModFor bt) "abs" thisArg args i.ArgTypes |> Some
          | _ -> math r t args i.ArgTypes i.CompiledName |> Some
      | "Acos", _ | "Asin", _ | "Atan", _ | "Atan2", _
      | "Cos", _ | "Exp", _ | "Floor", _ | "Log", _ | "Log10", _
      | "Sin", _ | "Sqrt", _ | "Tan", _ ->
          math r t args i.ArgTypes i.CompiledName |> Some
      | "Round", _ ->
          coreCall r t "Util" "round" thisArg args i.ArgTypes |> Some
      | "Sign", _ ->
          let args =
              match args with
              | ((ExprType(Builtin(BclInt64|BclBigInt) as t)) as arg)::_ ->
                  toFloat t (Number Float64) [arg] |> List.singleton
              | _ -> args
          coreCall r t "Util" "sign" None args i.ArgTypes |> Some
      // Numbers
      | ("Infinity"|"InfinitySingle"), _ ->
          globalIdent "Number" "POSITIVE_INFINITY" |> Some
      | ("NaN"|"NaNSingle"), _ ->
          globalIdent "Number" "NaN" |> Some
      // TODO: Move these optimizations to special pass and check side effects
      // | "Fst", [Value(NewTuple(fst::_))] -> Some fst
      // | "Snd", [Value(NewTuple(_::snd::_))] -> Some snd
  
negative.code: 
  let exceptions (_: ICompiler) r t (i: CallInfo) (thisArg: Expr option) (args: Expr list) =
      match i.CompiledName, thisArg with
      | ".ctor", _ -> Helper.ConstructorCall(makeIdentExpr "Error", t, args, ?loc=r) |> Some
      | "get_Message", Some e -> get r t e "message" |> Some
      | "get_StackTrace", Some e -> get r t e "stack" |> Some
      | _ -> None
  