// Path: src/main/java/j8spec/ExampleGroupDefinition.java
// static ExampleGroupDefinition newExampleGroupDefinition(
//     Class<?> specClass,
//     ExampleGroupContext context
// ) {
//     ExampleGroupConfiguration.Builder configBuilder = new ExampleGroupConfiguration.Builder()
//         .description(specClass.getName())
//         .executionFlag(DEFAULT);
// 
//     configureExecutionOrder(specClass, configBuilder);
// 
//     ExampleGroupDefinition group = new ExampleGroupDefinition(configBuilder.build(), context);
//     context.switchTo(group);
// 
//     try {
//         specClass.newInstance();
//     } catch (Exceptions.Base e) {
//         throw e;
//     } catch (Exception e) {
//         throw new Exceptions.SpecInitializationFailed(specClass, e);
//     }
// 
//     return group;
// }


import java.util.List;
import java.util.function.Function;
import static j8spec.BlockExecutionFlag.DEFAULT;
import static j8spec.BlockExecutionFlag.FOCUSED;
import static j8spec.BlockExecutionFlag.IGNORED;
import static j8spec.ExampleGroupDefinition.newExampleGroupDefinition;
import static java.util.function.Function.identity;
     * @since 3.1.0
     */
    public static <T> T var(Var<T> var) {
        return var.value;
    }

    /**
     * Stores the given value in the provided variable object.
     *
     * @param var variable object
     * @param value value to be stored
     * @param <T> type of value the variable object can store
     * @return value stored in the variable object
     * @since 3.1.0
     */
    public static <T> T var(Var<T> var, T value) {
        return var.value = value;
    }

    /**
     * Uses the given spec class to build and populate a list of {@link Example} objects ready to be executed.
     *
     * @param specClass class with a public default constructor that contains the spec definition
     * @return {@link Example} objects that represent the spec definition and can be executed
     * @throws Exceptions.SpecInitializationFailed if it is not possible to create an instance of <code>specClass</code>
     * @since 2.0.0
     */
    public static synchronized List<Example> read(Class<?> specClass) {
        contexts.set(new ExampleGroupContext());
        try {
// Path: src/main/java/j8spec/ExampleGroupDefinition.java
// static ExampleGroupDefinition newExampleGroupDefinition(
//     Class<?> specClass,
//     ExampleGroupContext context
// ) {
//     ExampleGroupConfiguration.Builder configBuilder = new ExampleGroupConfiguration.Builder()
//         .description(specClass.getName())
//         .executionFlag(DEFAULT);
// 
//     configureExecutionOrder(specClass, configBuilder);
// 
//     ExampleGroupDefinition group = new ExampleGroupDefinition(configBuilder.build(), context);
//     context.switchTo(group);
// 
//     try {
//         specClass.newInstance();
//     } catch (Exceptions.Base e) {
//         throw e;
//     } catch (Exception e) {
//         throw new Exceptions.SpecInitializationFailed(specClass, e);
//     }
// 
//     return group;
// }


// Path: src/main/java/j8spec/J8Spec.java
import java.util.List;
import java.util.function.Function;
import static j8spec.BlockExecutionFlag.DEFAULT;
import static j8spec.BlockExecutionFlag.FOCUSED;
import static j8spec.BlockExecutionFlag.IGNORED;
import static j8spec.ExampleGroupDefinition.newExampleGroupDefinition;
import static java.util.function.Function.identity;

     * @since 3.1.0
     */
    public static <T> T var(Var<T> var) {
        return var.value;
    }

    /**
     * Stores the given value in the provided variable object.
     *
     * @param var variable object
     * @param value value to be stored
     * @param <T> type of value the variable object can store
     * @return value stored in the variable object
     * @since 3.1.0
     */
    public static <T> T var(Var<T> var, T value) {
        return var.value = value;
    }

    /**
     * Uses the given spec class to build and populate a list of {@link Example} objects ready to be executed.
     *
     * @param specClass class with a public default constructor that contains the spec definition
     * @return {@link Example} objects that represent the spec definition and can be executed
     * @throws Exceptions.SpecInitializationFailed if it is not possible to create an instance of <code>specClass</code>
     * @since 2.0.0
     */
    public static synchronized List<Example> read(Class<?> specClass) {
        contexts.set(new ExampleGroupContext());
        try {
            ExampleGroupDefinition exampleGroupDefinition = newExampleGroupDefinition(specClass, contexts.get());