anchor.diff:          let mutable desc = Unchecked.defaultof<_>
   
           let getOrCreate() =
  -            if initialized then 
  -                true
  -            else
  -                initialized <- true
  -                desc <- createDesc this 
  -                this.OutOfDate <- false
  -                false
  +            lock this (fun () ->
  +                if initialized then 
  +                    true
  +                else
  +                    initialized <- true
  +                    desc <- createDesc this 
  +                    this.OutOfDate <- false
  +                    false
  +            )
   
           override x.InputChanged (i : IAdaptiveObject) =
               if getOrCreate() then
  
positive.code: 
  
                      // TODO: writers could be created by the pool!!!!
                      let writers = UnmanagedUniformWriters.writers true pool.Fields inputs
       
                      let view = pool.AllocView()
  
negative.code:         member x.CreateUniformBufferPool (layout : UniformBlock) =
              uniformBufferPools.GetOrAdd(layout, fun (layout : UniformBlock) ->
                  let uniformFields = layout.fields |> List.map (fun a -> a.UniformField)
                  let pool = ctx.CreateUniformBufferPool(layout.size, uniformFields)
                  if isNull (pool :> obj) then Log.warn "asdasdasd"
                  pool
              )
  
               
  