code: func NewAllocator(lcDs, glDs datastore.DataStore) (*Allocator, error) {
  	a := &Allocator{}
  
  	// Load predefined subnet pools
  
  	a.predefined = map[string][]*net.IPNet{
  		localAddressSpace:  ipamutils.GetLocalScopeDefaultNetworks(),
  		globalAddressSpace: ipamutils.GetGlobalScopeDefaultNetworks(),
  	}
  
  	// Initialize asIndices map
  	a.predefinedStartIndices = make(map[string]int)
  
  	// Initialize bitseq map
  	a.addresses = make(map[SubnetKey]*bitseq.Handle)
  
  	// Initialize address spaces
  	a.addrSpaces = make(map[string]*addrSpace)
  	for _, aspc := range []struct {
  		as string
  		ds datastore.DataStore
  	}{
  		{localAddressSpace, lcDs},
  		{globalAddressSpace, glDs},
  	} {
  		a.initializeAddressSpace(aspc.as, aspc.ds)
  	}
  
  	return a, nil
  }
docs: // NewAllocator returns an instance of libnetwork ipam