code: public static DNSApiManager create(Provider in, Object... modules) {
      Object[] modulesForGraph = modulesForGraph(in, modules).toArray();
      try {
        return ObjectGraph.create(modulesForGraph).get(DNSApiManager.class);
      } catch (IllegalStateException e) {
        // much simpler to special-case when a credential module is needed,
        // but not supplied, than do too much magic.
        if (e.getMessage().contains("denominator.Credentials could not be bound")
            && !in.credentialTypeToParameterNames().isEmpty()) {
          throw new IllegalArgumentException(CredentialsConfiguration.exceptionMessage(null, in));
        }
        throw e;
      }
    }
docs: Creates a new manager for a provider using its type, such as {@link
  denominator.mock.MockProvider}.
  
  ex.
  
  <pre>
  ultraDns = Denominator.create(new UltraDNSProvider(), credentials(username, password));
  </pre>
  
  @throws IllegalArgumentException if the input provider is misconfigured or expects
  credentials.
  @see CredentialsConfiguration
  @see #providers