public T GetAspect <T>() where T : class, INestedAspect, new() { if (!Aspects.TryGetValue(typeof(T), out var result)) { result = SetAspect(new T()); } return((T)result); }