anchor.diff:      
       /// Create a new index instance
       let create (settings : IndexSetting) = 
  -        let template = new ThreadLocal<DocumentTemplate>((fun _ -> DocumentTemplate.create (settings)), true)
  -        
  +        let factory = fun _ -> DocumentTemplate.create (settings)
  +        let policy = new DefaultObjectPoolPolicy<DocumentTemplate>(factory, fun _ -> true)
           // Create a shard for the index
           let createShard (n) = 
               let path = settings.BaseFolder +/ "shards" +/ n.ToString() +/ "index"
  
positive.code:                 s.ShardWriters.[shardNo].TxWriter.Append(stream.ToArray(), s.ShardWriters.[shardNo].Generation.Value)
              // Release the dictionary back to the pool so that it could be recycled
              dictionaryPool.Return(document.Fields)
              s.ShardWriters.[shardNo] 
              |> if create then ShardWriter.addDocument doc
                 else ShardWriter.updateDocument (document.Id, (s.GetSchemaName(IdField.Name)), doc)
  
negative.code:                 |> boolToResult UnableToUpdateMemory
              let txId = s.ShardWriters.[shardNo].GetNextIndex()
              // Create new binary document
              let template = s.Template.Get()
              let doc = template |> DocumentTemplate.updateTempate document txId
              if addToTxLog then 
                  let opCode = 
                      if create then TxOperation.Create
  