anchor.diff:          let str = (kernel :> ICLKernel).Source.ToString()    
           let program, error = Cl.CreateProgramWithSource(this.Context, 1u, [|str|], null)
           let _devices = Array.ofSeq  this.Devices
  -        let error = Cl.BuildProgram(program, _devices.Length |> uint32, _devices, this.CompileOptionsStr, null, IntPtr.Zero);
  +        let error = Cl.BuildProgram(program, _devices.Length |> uint32, _devices, this.CompileOptionsStr, null, IntPtr.Zero)
           if error <> Cl.ErrorCode.Success
           then 
               let s = _devices |> Array.map (fun device -> Cl.GetProgramBuildInfo(program, device, Cl.ProgramBuildInfo.Log ) |> fst |> string)
  
positive.code: type CLCodeGenerator with
      static member GenerateKernel(lambda: Expr, provider: ComputeProvider, kernel:ICLKernel) =        
          let codeGenerator = new Translator.FSQuotationToOpenCLTranslator()
          let ast = codeGenerator.Translate(lambda)
          let code = Printer.AST.Print ast
          kernel.Source <- kernel.Source.Append(code)
          kernel.SetClosures([||])
          kernel.SetParameters([])
          
  type ComputeProvider with
      member this.CompileQuery<'T,'TRange, 'T1 
  
negative.code:                                     and 'TRange : (new: unit -> 'TRange)>
              (query: Expr, ?_options:CompileOptions) =
          let options = defaultArg _options this.DefaultOptions_p
          this.SetCompileOptions options
          this.CompileQuery<Kernel<'TRange, 'T1, 'T2, 'T3>,'TRange,'T1> query
      