A static field in a generic type is not shared among instances of different closed constructed types, thus ``++LengthLimitedSingletonCollection<int>.instances++`` and ``++LengthLimitedSingletonCollection<string>.instances++`` will point to different objects, even though ``++instances++`` is seemingly shared among all ``++LengthLimitedSingletonCollection<>++`` generic classes.
If you need to have a static field shared among instances with different generic arguments, define a non-generic base class to store your static members, then set your generic type to inherit from the base class.
If the static field or property uses a type parameter, then the developer is assumed to understand that the static member is not shared among the closed constructed types.