public void Set(IPoolProvider provider) => this.Provider = provider ?? throw new ArgumentNullException(nameof(provider));
public static void Set(IPoolProvider provider) => _provider = provider ?? _defaultProvider;
public static void Set <T>() where T : IPoolProvider, new() => _provider = new T();
static Pool() { _provider = _defaultProvider = new DefaultProvider(); }