anchor.diff:                            multisample : MultisampleState,
                             depthStencil : INativeResourceLocation<VkPipelineDepthStencilStateCreateInfo>
                            ) =
  -        inherit AbstractPointerResource<VkPipeline>(owner, key)
  +        inherit AbstractResourceLocation<VkPipeline>(owner, key)
  +
  +        let mutable pipe : nativeptr<VkPipeline> = 
  +            let ptr = NativePtr.alloc 1
  +            NativePtr.write ptr VkPipeline.Null
  +            ptr
   
           static let check str err =
               if err <> VkResult.VkSuccess then failwithf "[Vulkan] %s" str
   
           override x.Create() =
  -            base.Create()
               program.Acquire()
               inputState.Acquire()
               inputAssembly.Acquire()
  
positive.code:                             prog.PipelineLayout.Handle,
                              renderPass.Handle,
                              0u,
                              VkPipeline.Null,
                              0
                          )
  
                      VkRaw.vkCreateGraphicsPipelines(device.Handle, VkPipelineCache.Null, 1u, pDesc, NativePtr.zero, pHandle)
                          |> check "could not create pipeline"
  
                      return Pipeline(device, !!pHandle, Unchecked.defaultof<_>)
                  }
  
              pipeline.Handle
      
          override x.Free(p : VkPipeline) =
              VkRaw.vkDestroyPipeline(renderPass.Device.Handle, p, NativePtr.zero)
  
      type IndirectDrawCallResource(owner : IResourceCache, key : list<obj>, indexed : bool, calls : IResourceLocation<IndirectBuffer>) =
          inherit AbstractPointerResourceWithEquality<DrawCall>(owner, key)
  
negative.code:             colorBlendState.Release()
              depthStencil.Release()
              
              if not (NativePtr.isNull pipe) then
                  let p = !!pipe
                  if p.IsValid then
                      VkRaw.vkDestroyPipeline(renderPass.Device.Handle, p, NativePtr.zero)
                  NativePtr.free pipe
                  pipe <- NativePtr.zero
  
          override x.GetHandle(token : AdaptiveToken) =
              let program = program.Update token
                  
              let prog = program.handle
  