// Path: src/main/java/com/cloudera/director/spi/v2/model/exception/PluginExceptionDetails.java
// public static final PluginExceptionDetails DEFAULT_DETAILS = new PluginExceptionDetails(
//     DEFAULT_CONDITIONS_BY_KEY
// );


import static com.cloudera.director.spi.v2.model.exception.PluginExceptionDetails.DEFAULT_DETAILS;
import static org.assertj.core.api.Assertions.assertThat;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.junit.Test;
     * The constructor parameter types.
     */
    private final Class[] parameterTypes;

    /**
     * Creates an arg variant with the specified parameters.
     *
     * @param parameterTypes the constructor parameter types
     */
    private ConstructorVariant(Class[] parameterTypes) {
      this.parameterTypes = parameterTypes;
    }

    /**
     * Returns the constructor parameter types.
     *
     * @return the constructor parameter types
     */
    public Class[] getParameterTypes() {
      return parameterTypes;
    }

    public abstract Object[] getParameterValues(String message, Throwable cause,
        PluginExceptionDetails details);
  }

  @Test
  public void testConstructors() throws Exception {
    for (ConstructorVariant constructorVariant : ConstructorVariant.values()) {
      try {
// Path: src/main/java/com/cloudera/director/spi/v2/model/exception/PluginExceptionDetails.java
// public static final PluginExceptionDetails DEFAULT_DETAILS = new PluginExceptionDetails(
//     DEFAULT_CONDITIONS_BY_KEY
// );


// Path: src/test/java/com/cloudera/director/spi/v2/model/exception/AbstractPluginExceptionTest.java
import static com.cloudera.director.spi.v2.model.exception.PluginExceptionDetails.DEFAULT_DETAILS;
import static org.assertj.core.api.Assertions.assertThat;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.junit.Test;

     * The constructor parameter types.
     */
    private final Class[] parameterTypes;

    /**
     * Creates an arg variant with the specified parameters.
     *
     * @param parameterTypes the constructor parameter types
     */
    private ConstructorVariant(Class[] parameterTypes) {
      this.parameterTypes = parameterTypes;
    }

    /**
     * Returns the constructor parameter types.
     *
     * @return the constructor parameter types
     */
    public Class[] getParameterTypes() {
      return parameterTypes;
    }

    public abstract Object[] getParameterValues(String message, Throwable cause,
        PluginExceptionDetails details);
  }

  @Test
  public void testConstructors() throws Exception {
    for (ConstructorVariant constructorVariant : ConstructorVariant.values()) {
      try {
        throwException(TEST_MESSAGE, TEST_THROWABLE, DEFAULT_DETAILS, constructorVariant);