// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/engine/TestCompiler.java
// public interface TestCompiler {
// 
//     /**
//      * Produces a {@link CompilationResult} from the given {@link TestSource}
//      *
//      * @param testSources    test sources to compile
//      * @param settings       plugin settings to use
//      * @return               compilation result
//      */
//     @NotNull
//     CompilationResult compile(@NotNull Collection<TestSource> testSources, @NotNull TrautePluginSettings settings);
// 
//     /**
//      * Behaves like {@link #compile(Collection, TrautePluginSettings)} but additionally checks
//      * resulting {@link CompilationResult} against the given {@link Expectation}
//      *
//      * @param testSources    test sources to compile
//      * @param settings       plugin settings to use
//      * @param expectation    a compilation result's expectation
//      * @return               compilation result for the given test sources
//      */
//     @NotNull
//     default CompilationResult compile(@NotNull Collection<TestSource> testSources,
//                                       @NotNull TrautePluginSettings settings,
//                                       @NotNull Expectation<CompilationResult> expectation)
//     {
//         CompilationResult result = compile(testSources, settings);
//         expectation.match(result);
//         return result;
//     }
// 
//     /**
//      * @param result    notifies that given compilation result is not needed anymore and all resources associated
//      *                  with it can be released
//      */
//     void release(@NotNull CompilationResult result);
// }
// 
// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/impl/engine/AbstractTrauteExtension.java
// public abstract class AbstractTrauteExtension implements TestInstancePostProcessor {
// 
//     public AbstractTrauteExtension() {
//         System.setProperty(AbstractTrauteTest.ACTIVATION_PROPERTY, Boolean.TRUE.toString());
//     }
// 
//     @Override
//     public final void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception {
//         for (Class<?> clazz = testInstance.getClass(); clazz != null; clazz = clazz.getSuperclass()) {
//             Field[] fields = clazz.getDeclaredFields();
//             for (Field field : fields) {
//                 if (field.getType() == TestCompiler.class) {
//                     field.setAccessible(true);
//                     field.set(testInstance, getCompiler());
//                 } else if (field.getType() == TestRunner.class) {
//                     field.setAccessible(true);
//                     field.set(testInstance, TrauteInMemoryTestRunner.INSTANCE);
//                 }
//             }
//         }
//     }
// 
//     @NotNull
//     protected abstract TestCompiler getCompiler();
// }


import org.jetbrains.annotations.NotNull;
import tech.harmonysoft.oss.traute.test.api.engine.TestCompiler;
import tech.harmonysoft.oss.traute.test.impl.engine.AbstractTrauteExtension;
package tech.harmonysoft.oss.traute.ant.test.impl;


public class TrauteAntExtension extends AbstractTrauteExtension {

    @Override
// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/api/engine/TestCompiler.java
// public interface TestCompiler {
// 
//     /**
//      * Produces a {@link CompilationResult} from the given {@link TestSource}
//      *
//      * @param testSources    test sources to compile
//      * @param settings       plugin settings to use
//      * @return               compilation result
//      */
//     @NotNull
//     CompilationResult compile(@NotNull Collection<TestSource> testSources, @NotNull TrautePluginSettings settings);
// 
//     /**
//      * Behaves like {@link #compile(Collection, TrautePluginSettings)} but additionally checks
//      * resulting {@link CompilationResult} against the given {@link Expectation}
//      *
//      * @param testSources    test sources to compile
//      * @param settings       plugin settings to use
//      * @param expectation    a compilation result's expectation
//      * @return               compilation result for the given test sources
//      */
//     @NotNull
//     default CompilationResult compile(@NotNull Collection<TestSource> testSources,
//                                       @NotNull TrautePluginSettings settings,
//                                       @NotNull Expectation<CompilationResult> expectation)
//     {
//         CompilationResult result = compile(testSources, settings);
//         expectation.match(result);
//         return result;
//     }
// 
//     /**
//      * @param result    notifies that given compilation result is not needed anymore and all resources associated
//      *                  with it can be released
//      */
//     void release(@NotNull CompilationResult result);
// }
// 
// Path: core/test/src/test/java/tech/harmonysoft/oss/traute/test/impl/engine/AbstractTrauteExtension.java
// public abstract class AbstractTrauteExtension implements TestInstancePostProcessor {
// 
//     public AbstractTrauteExtension() {
//         System.setProperty(AbstractTrauteTest.ACTIVATION_PROPERTY, Boolean.TRUE.toString());
//     }
// 
//     @Override
//     public final void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception {
//         for (Class<?> clazz = testInstance.getClass(); clazz != null; clazz = clazz.getSuperclass()) {
//             Field[] fields = clazz.getDeclaredFields();
//             for (Field field : fields) {
//                 if (field.getType() == TestCompiler.class) {
//                     field.setAccessible(true);
//                     field.set(testInstance, getCompiler());
//                 } else if (field.getType() == TestRunner.class) {
//                     field.setAccessible(true);
//                     field.set(testInstance, TrauteInMemoryTestRunner.INSTANCE);
//                 }
//             }
//         }
//     }
// 
//     @NotNull
//     protected abstract TestCompiler getCompiler();
// }


// Path: facade/ant/src/test/java/tech/harmonysoft/oss/traute/ant/test/impl/TrauteAntExtension.java
import org.jetbrains.annotations.NotNull;
import tech.harmonysoft.oss.traute.test.api.engine.TestCompiler;
import tech.harmonysoft.oss.traute.test.impl.engine.AbstractTrauteExtension;

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


public class TrauteAntExtension extends AbstractTrauteExtension {

    @Override
    protected @NotNull TestCompiler getCompiler() {