private MemoryCacheItem GetOrCreate(BuildKey builder)
{
Contract.Ensures(Contract.Result<MemoryCacheItem>() != null);
lock (cache)
{
MemoryCacheItem item;
if (!cache.TryGetValue(builder, out item))
{
item = new MemoryCacheItem();
cache.Add(builder, item);
}
Contract.Assume(item != null);
return item;
}
}