code: func (p *GoogleProvider) Zones() (map[string]*dns.ManagedZone, error) {
  	zones := make(map[string]*dns.ManagedZone)
  
  	f := func(resp *dns.ManagedZonesListResponse) error {
  		for _, zone := range resp.ManagedZones {
  			if p.domainFilter.Match(zone.DnsName) && p.zoneIDFilter.Match(fmt.Sprintf("%v", zone.Id)) {
  				zones[zone.Name] = zone
  				log.Debugf("Matched %s (zone: %s)", zone.DnsName, zone.Name)
  			} else {
  				log.Debugf("Filtered %s (zone: %s)", zone.DnsName, zone.Name)
  			}
  		}
  
  		return nil
  	}
  
  	log.Debugf("Matching zones against domain filters: %v", p.domainFilter.filters)
  	if err := p.managedZonesClient.List(p.project).Pages(context.TODO(), f); err != nil {
  		return nil, err
  	}
  
  	if len(zones) == 0 {
  		if p.domainFilter.IsConfigured() {
  			log.Warnf("No zones in the project, %s, match domain filters: %v", p.project, p.domainFilter.filters)
  		} else {
  			log.Warnf("No zones found in the project, %s", p.project)
  		}
  	}
  
  	for _, zone := range zones {
  		log.Debugf("Considering zone: %s (domain: %s)", zone.Name, zone.DnsName)
  	}
  
  	return zones, nil
  }
docs: // Zones returns the list of hosted zones.