code: func NewPortAllocatorCustom(pr net.PortRange, allocatorFactory allocator.AllocatorFactory) *PortAllocator {
  	max := pr.Size
  	rangeSpec := pr.String()
  
  	a := &PortAllocator{
  		portRange: pr,
  	}
  	a.alloc = allocatorFactory(max, rangeSpec)
  	return a
  }
docs: // NewPortAllocatorCustom creates a PortAllocator over a net.PortRange, calling allocatorFactory to construct the backing store.