anchor.diff:          if error <> ErrorCode.Success
           then raise (new CLException(error))
   
  +    let range = ref Unchecked.defaultof<'TRange>
       let argsSetupFunction =
           let rng = ref Unchecked.defaultof<'TRange>
           let args = ref [||]
  
positive.code:                     Expr.Lambda(v, go body (v::vars))
                  | e ->
                      let arr =
                          let c = Expr.NewArray(typeof<obj>,vars |> List.rev
                              |> List.map
                                   (fun v -> Expr.Coerce (Expr.Var(v), typeof<obj>)))
                          <@@
                              let x = %%c |> List.ofArray
                              rng := (box x.Head) :?> 'TRange
                              args := x.Tail |> Array.ofList
                              //let brahmsRunCls = new Brahma.OpenCL.Commands.Run<_>(kernel :> Kernel<'TRange>,!rng)
                              !args |> Array.iteri (fun i x -> setupArgument i x)
  
negative.code:     member this.Buffer = buffer
      member this.Length = length
  
  type GpuKernel<'TRange, 'a when 'TRange :> Brahma.OpenCL.INDRangeDimension>(device, context, srcLambda: Expr<'TRange ->'a>) =
  
      let kernelName = "brahmaKernel"
  
  