class DnsResolverConnectionStrategy extends AbstractConnectionStrategy {

  @Override
  public Iterator<LdapURL> iterator()
  {
    if (!isInitialized()) {
      throw new IllegalStateException("Strategy is not initialized");
    }
    if (Instant.now().isAfter(expirationTime)) {
      populate(ldapUrls, ldapURLSet);
    }
    if (iterFunction != null) {
      return iterFunction.apply(ldapURLSet.getUrls());
    }
    return new DefaultLdapURLIterator(ldapURLSet.getUrls());
  }

  public  DnsResolverConnectionStrategy();
  public  DnsResolverConnectionStrategy(final Duration ttl);
  public  DnsResolverConnectionStrategy(final Function<List<LdapURL>, Iterator<LdapURL>> function);
  public  DnsResolverConnectionStrategy(final Function<List<LdapURL>, Iterator<LdapURL>> function, final Duration ttl);

}