code: func NewPool(opts Options) Pool {
  	p := &poolOfContexts{
  		ctxPool: pool.NewObjectPool(opts.ContextPoolOptions()),
  		finalizersPool: newFinalizeablesArrayPool(finalizeablesArrayPoolOpts{
  			Capacity:    opts.InitPooledFinalizerCapacity(),
  			MaxCapacity: opts.MaxPooledFinalizerCapacity(),
  			Options:     opts.FinalizerPoolOptions(),
  		}),
  	}
  
  	p.finalizersPool.Init()
  	p.ctxPool.Init(func() interface{} {
  		return newPooledContext(p)
  	})
  
  	return p
  }
docs: // NewPool creates a new context pool.