public static GenerationUpdater GetUpdater(string groupKey) { if (groupKey.IsNullOrEmpty()) throw new ArgumentNullException("generationKey"); var updater = byGroupKey[groupKey] as GenerationUpdater; if (updater == null) { var locked = Hashtable.Synchronized(byGroupKey); updater = new GenerationUpdater(groupKey); byGroupKey[groupKey] = byGroupKey[groupKey] ?? updater; } return updater; }