// Path: core/src/main/java/me/gregorias/dfuntest/CommandException.java
// @SuppressWarnings("unused")
// public class CommandException extends Exception {
//   private static final long serialVersionUID = 1L;
// 
//   public CommandException() {
//     super();
//   }
// 
//   public CommandException(String message, Throwable cause,
//       boolean enableSuppression, boolean writableStackTrace) {
//     super(message, cause, enableSuppression, writableStackTrace);
//   }
// 
//   public CommandException(String message, Throwable cause) {
//     super(message, cause);
//   }
// 
//   public CommandException(String message) {
//     super(message);
//   }
// 
//   public CommandException(Throwable cause) {
//     super(cause);
//   }
// }
// 
// Path: core/src/main/java/me/gregorias/dfuntest/TestScript.java
// public interface TestScript<AppT extends App> {
//   /**
//    * @param apps applications to test
//    * @return result of the test
//    */
//   TestResult run(Collection<AppT> apps);
// }


import me.gregorias.dfuntest.CommandException;
import me.gregorias.dfuntest.TestScript;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
package me.gregorias.dfuntest.example;



/**
 * Base implementation for Example's test scripts which adds start up and shut down functionality.
 */
public abstract class AbstractExampleTestScript implements TestScript<ExampleApp> {
  private static final Logger LOGGER = LoggerFactory.getLogger(AbstractExampleTestScript.class);

  protected void startUpApps(Collection<ExampleApp> apps) throws CommandException, IOException {
    Collection<ExampleApp> startedApps = new ArrayList<>();
    for (ExampleApp app : apps) {
      try {
        app.startUp();
        startedApps.add(app);
// Path: core/src/main/java/me/gregorias/dfuntest/CommandException.java
// @SuppressWarnings("unused")
// public class CommandException extends Exception {
//   private static final long serialVersionUID = 1L;
// 
//   public CommandException() {
//     super();
//   }
// 
//   public CommandException(String message, Throwable cause,
//       boolean enableSuppression, boolean writableStackTrace) {
//     super(message, cause, enableSuppression, writableStackTrace);
//   }
// 
//   public CommandException(String message, Throwable cause) {
//     super(message, cause);
//   }
// 
//   public CommandException(String message) {
//     super(message);
//   }
// 
//   public CommandException(Throwable cause) {
//     super(cause);
//   }
// }
// 
// Path: core/src/main/java/me/gregorias/dfuntest/TestScript.java
// public interface TestScript<AppT extends App> {
//   /**
//    * @param apps applications to test
//    * @return result of the test
//    */
//   TestResult run(Collection<AppT> apps);
// }


// Path: example/src/main/java/me/gregorias/dfuntest/example/AbstractExampleTestScript.java
import me.gregorias.dfuntest.CommandException;
import me.gregorias.dfuntest.TestScript;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;

package me.gregorias.dfuntest.example;



/**
 * Base implementation for Example's test scripts which adds start up and shut down functionality.
 */
public abstract class AbstractExampleTestScript implements TestScript<ExampleApp> {
  private static final Logger LOGGER = LoggerFactory.getLogger(AbstractExampleTestScript.class);

  protected void startUpApps(Collection<ExampleApp> apps) throws CommandException, IOException {
    Collection<ExampleApp> startedApps = new ArrayList<>();
    for (ExampleApp app : apps) {
      try {
        app.startUp();
        startedApps.add(app);
      } catch (CommandException | IOException e) {