anchor.diff:  let drawMesh (m:Rendering.AllocatedMesh) (primitiveType:PrimitiveType) =
       m.bind()
   
  -    let buffer = GL.MapBuffer(BufferTarget.ArrayBuffer, BufferAccess.ReadOnly)
  -    let dest = Array.zeroCreate<float32> (128 * 128 * 8)
  -    Marshal.Copy(buffer, dest, 0, dest.Length)
  -    GL.UnmapBuffer(BufferTarget.ArrayBuffer) |> ignore
  -    
  -    let vectors = Array.zeroCreate<Vector3> (dest.Length / 8)
  -    for i = 0 to vectors.Length - 1 do
  -        let v = new Vector3(dest.[i*8], dest.[i*8+1], dest.[i*8+2])
  -        vectors.[i] <- v
  -            
  -    //GL.DrawElements(BeginMode.Triangles, m.faces * 3, DrawElementsType.UnsignedInt, 0);
  -    GL.DrawArrays(BeginMode.Points, 0, 128 * 128)
  +    GL.DrawElements(BeginMode.Triangles, m.faces * 3, DrawElementsType.UnsignedInt, 0);
   
   type ShaderProgram =
       | SimpleShaderProgram of SimpleShaderProgram.SimpleProgram
  
positive.code:     let keyboard = new CjClutter.OpenGl.Input.Keboard.KeyboardInputProcessor()
      let mutable synchronizeCameras = true
      let mutable nodesInCache = 0
      let mutable cacheSize = 1
  
      override this.OnLoad(e) =
          this.program <- BlinnShaderProgram BlinnShaderProgram.makeBlinnShaderProgram
  
negative.code:         let allocate = allocateGpu elementBuffer elements noiseProgram
  
          this.nodeCache <- makeCache allocate
  
          this.mesh <- allocate node
  
          for i = 1 to 1 do
              BackgroundWorker.startWorkerThread this |> ignore
  