code: func endpointsForHostname(hostname string, targets endpoint.Targets, ttl endpoint.TTL, providerSpecific endpoint.ProviderSpecific) []*endpoint.Endpoint {
  	var endpoints []*endpoint.Endpoint
  
  	var aTargets endpoint.Targets
  	var cnameTargets endpoint.Targets
  
  	for _, t := range targets {
  		switch suitableType(t) {
  		case endpoint.RecordTypeA:
  			aTargets = append(aTargets, t)
  		default:
  			cnameTargets = append(cnameTargets, t)
  		}
  	}
  
  	if len(aTargets) > 0 {
  		epA := &endpoint.Endpoint{
  			DNSName:          strings.TrimSuffix(hostname, "."),
  			Targets:          aTargets,
  			RecordTTL:        ttl,
  			RecordType:       endpoint.RecordTypeA,
  			Labels:           endpoint.NewLabels(),
  			ProviderSpecific: providerSpecific,
  		}
  		endpoints = append(endpoints, epA)
  	}
  
  	if len(cnameTargets) > 0 {
  		epCNAME := &endpoint.Endpoint{
  			DNSName:          strings.TrimSuffix(hostname, "."),
  			Targets:          cnameTargets,
  			RecordTTL:        ttl,
  			RecordType:       endpoint.RecordTypeCNAME,
  			Labels:           endpoint.NewLabels(),
  			ProviderSpecific: providerSpecific,
  		}
  		endpoints = append(endpoints, epCNAME)
  	}
  
  	return endpoints
  }
docs: // endpointsForHostname returns the endpoint objects for each host-target combination.