public static TypeRule Rule(this Func<Type, bool> t, out IDisposable unreg) { t.AssertNotNull(); var rule = new TypeRule(t); Repository.Rules.Add(rule); unreg = new DisposableAction(() => Repository.Rules.Remove(rule)); return rule; }