code: public static Provider withUrl(Provider provider, String url) {
      checkNotNull(provider, "provider");
      checkNotNull(url, "url");
      try {
        Constructor<?> ctor = provider.getClass().getDeclaredConstructor(String.class);
        // allow private or package protected ctors
        ctor.setAccessible(true);
        return Provider.class.cast(ctor.newInstance(url));
      } catch (NoSuchMethodException e) {
        throw new IllegalArgumentException(
            provider.getClass() + " does not have a String parameter constructor", e);
      } catch (Exception e) {
        throw new IllegalArgumentException(
            "exception attempting to instantiate " + provider.getClass()
            + " for provider " + provider, e);
      }
    }
docs: Overrides the {@link Provider#url()} of a given provider via reflectively calling its url
  constructor.
  
  ex.
  
  <pre>
  provider = withUrl(getByName(providerName), overrideUrl);
  module = getByName(provider);
  ultraDns = ObjectGraph.create(provide(provider), module, credentials(username,
  password)).get(DNSApiManager.class);
  </pre>
  
  @param url corresponds to {@link Provider#url()}. ex {@code http://apiendpoint}
  @throws IllegalArgumentException if the there's no constructor that accepts a string argument.