public static void Main()
var cache1 = new CacheTest();
var cache2 = new CacheTest();
int cache1_1 = cache1.FromCache(i => cache1.Increment());
int cache1_2 = cache1.FromCache(i => cache1.Increment());
int cache2_1 = cache1.FromCache("CustomKey", i => cache2.Increment());
int cache2_2 = cache1.FromCache("CustomKey", i => cache2.Increment());
int cache3_1 = cache1.FromCache("CustomKeyWithValue", 1);
int cache3_2 = cache1.FromCache("CustomKeyWithValue", 2);
Console.WriteLine(cache1_1);
Console.WriteLine(cache1_2);
Console.WriteLine(cache2_1);
Console.WriteLine(cache2_2);
Console.WriteLine(cache3_1);
Console.WriteLine(cache3_2);