anchor.diff:              // clear all caches
               cache.Clear()
               dirty.Clear()
  +            reader.Dispose()
  +
  +            // free the entry-command
  +            for (KeyValue(_,b)) in trie do b.Dispose()
               trie.Clear()
  -            reader.Dispose()
  -
  -            // free the entry-command
  -            firstCommand.Dispose()
  +
   
           override x.Compile(token, stream) =
               let deltas = reader.GetOperations token
  
positive.code: 
              prepared <- Some o
  
      /// Rendering a set of IRenderObjects using an optimized order (grouped by Pipeline)
      and UnorderedRenderObjectCommand(compiler : Compiler, objects : aset<IRenderObject>) =
          inherit PreparedCommand()
  
          let reader = objects.GetReader()
  
          let firstCommand =
              { new PreparedCommand() with
                  override x.Free() = ()
                  override x.Compile(_,_) = ()
              }
  
          let trie = Trie<PreparedCommand>()
          do trie.Add([], firstCommand)
              
          let cache = Dict<IRenderObject, RenderObjectCommand>()
          let dirty = HashSet<RenderObjectCommand>()
  
negative.code:             let dirty = lock dirty (fun () -> consume dirty)
              for d in dirty do d.Update(token)
  
              for (KeyValue(_,b)) in trie do
                  b.Update token
  
              // rebuild the top-level stream
              stream.Clear()
              match firstBucket with
                  | Some first ->
                      stream.Call(first.First.Stream) |> ignore
                  | None ->
                      ()
  
  
      /// Clearing the current Framebuffer using the supplied values
      and ClearCommand(compiler : Compiler, colors : Map<Symbol, IMod<C4f>>, depth : Option<IMod<float>>, stencil : Option<IMod<uint32>>) =
  