// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/model/CompilationResult.java
// public interface CompilationResult extends Result<Collection<TestSource>> {
// 
//     /**
//      * @return      compiled classes. We use a {@link Supplier} here because there is a possible case that
//      *              compilation is failed and the test wants to check its {@code stderr}. We return a collection
//      *              of {@link ClassFile} because a single source file might result in multiple binaries after
//      *              compilation, e.g. when an inner/anonymous classes are involved
//      */
//     @NotNull
//     Supplier<Collection<ClassFile>> getCompiledClassesSupplier();
// 
//     /**
//      * @return      compiler's output generated during processing {@link #getInput() target binaries}
//      */
//     @NotNull
//     String getCompilationOutput();
// }
// 
// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/model/RunResult.java
// public interface RunResult extends Result<CompilationResult> {
// 
//     @NotNull
//     Optional<Throwable> getException();
// }


import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import tech.harmonysoft.oss.traute.test.api.model.CompilationResult;
import tech.harmonysoft.oss.traute.test.api.model.RunResult;
import java.util.Optional;
package tech.harmonysoft.oss.traute.test.impl.model;



public class RunResultImpl implements RunResult {

    @NotNull private final  CompilationResult input;
    @Nullable private final Throwable         exception;

// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/model/CompilationResult.java
// public interface CompilationResult extends Result<Collection<TestSource>> {
// 
//     /**
//      * @return      compiled classes. We use a {@link Supplier} here because there is a possible case that
//      *              compilation is failed and the test wants to check its {@code stderr}. We return a collection
//      *              of {@link ClassFile} because a single source file might result in multiple binaries after
//      *              compilation, e.g. when an inner/anonymous classes are involved
//      */
//     @NotNull
//     Supplier<Collection<ClassFile>> getCompiledClassesSupplier();
// 
//     /**
//      * @return      compiler's output generated during processing {@link #getInput() target binaries}
//      */
//     @NotNull
//     String getCompilationOutput();
// }
// 
// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/model/RunResult.java
// public interface RunResult extends Result<CompilationResult> {
// 
//     @NotNull
//     Optional<Throwable> getException();
// }


// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/impl/model/RunResultImpl.java
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import tech.harmonysoft.oss.traute.test.api.model.CompilationResult;
import tech.harmonysoft.oss.traute.test.api.model.RunResult;
import java.util.Optional;

package tech.harmonysoft.oss.traute.test.impl.model;



public class RunResultImpl implements RunResult {

    @NotNull private final  CompilationResult input;
    @Nullable private final Throwable         exception;

    public RunResultImpl(@NotNull CompilationResult input, @Nullable Throwable exception) {