anchor.diff:  open Microsoft.FSharp.Reflection
   open System.Collections
   open System
  +open System.Reflection
  +open Microsoft.FSharp.Quotations
   
   type JSValue = nativeint
   exception JSException of JSValue
  
positive.code:     project_hack (typeof<'T>) x |> unbox<'T>
  
  and embed_func (x:obj) =
      let f = fun (arg: JSValue[]) ->
          let domain = FSharpType.GetFunctionElements (x.GetType()) |> fst
          let projected_args =
              if FSharpType.IsTuple domain then
                  let proj_args_array = Array.map2 project_reflection (FSharpType.GetTupleElements domain) arg
                  [| FSharpValue.MakeTuple(proj_args_array, domain) |]
  
negative.code:         with
              | exn -> JSEngine.throwException(JSUtils.context, embed exn)
  
      JSEngine.makeFunction(JSUtils.context, new JSEngine.FSharpFunction(f))
  
  and project_func ty (f:JSValue list -> JSValue) : obj =
      let range = FSharpType.GetFunctionElements ty |> snd
  