anchor.diff:          }
   
       let private cache = System.Collections.Concurrent.ConcurrentDictionary<string * V3i, ComputeShader>()
  -
       
  +    let ofExpr (localSize : V3i) (body : Expr) =
  +        let hash = Expr.ComputeHash body
  +        cache.GetOrAdd((hash, localSize), fun (signature, localSize) ->
  +            let meth =
  +                match body.Method with
  +                    | Some mb -> mb
  +                    | None -> null
  +            ofExprInternal meth hash localSize body
  +        )
   
       let ofFunction (maxLocalSize : V3i) (f : 'a -> 'b) : ComputeShader =
           match tryExtractExpr f with
  
positive.code:         
  
          {
              csLocalSize     = localSize
              csBuffers       = buffers
              csImages        = images
  
negative.code: 
  type ComputeShader =
      {
          csId            : string
          csMethod        : MethodBase
          csLocalSize     : V3i
          csBuffers       : Map<string, ComputeBuffer>
          csImages        : Map<string, ComputeImage>
  