diff --git a/junit-jupiter-api/src/module/org.junit.jupiter.api/module-info.java b/junit-jupiter-api/src/module/org.junit.jupiter.api/module-info.java index ad1578b8243a..b6856c78a11e 100644 --- a/junit-jupiter-api/src/module/org.junit.jupiter.api/module-info.java +++ b/junit-jupiter-api/src/module/org.junit.jupiter.api/module-info.java @@ -12,7 +12,7 @@ * Defines JUnit Jupiter API for writing tests. */ module org.junit.jupiter.api { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.platform.commons; requires transitive org.opentest4j; diff --git a/junit-jupiter-engine/src/module/org.junit.jupiter.engine/module-info.java b/junit-jupiter-engine/src/module/org.junit.jupiter.engine/module-info.java index 69b7097993bf..51b22b50ce05 100644 --- a/junit-jupiter-engine/src/module/org.junit.jupiter.engine/module-info.java +++ b/junit-jupiter-engine/src/module/org.junit.jupiter.engine/module-info.java @@ -17,7 +17,7 @@ * @provides org.junit.platform.engine.TestEngine */ module org.junit.jupiter.engine { - requires org.apiguardian.api; + requires static org.apiguardian.api; requires org.junit.jupiter.api; requires org.junit.platform.commons; requires org.junit.platform.engine; diff --git a/junit-jupiter-migrationsupport/src/module/org.junit.jupiter.migrationsupport/module-info.java b/junit-jupiter-migrationsupport/src/module/org.junit.jupiter.migrationsupport/module-info.java index c33255747653..3ace009eb0ab 100644 --- a/junit-jupiter-migrationsupport/src/module/org.junit.jupiter.migrationsupport/module-info.java +++ b/junit-jupiter-migrationsupport/src/module/org.junit.jupiter.migrationsupport/module-info.java @@ -15,7 +15,7 @@ */ module org.junit.jupiter.migrationsupport { requires transitive junit; // 4 - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.jupiter.api; requires org.junit.platform.commons; diff --git a/junit-jupiter-params/src/module/org.junit.jupiter.params/module-info.java b/junit-jupiter-params/src/module/org.junit.jupiter.params/module-info.java index c690245aab51..7f3ea0550c58 100644 --- a/junit-jupiter-params/src/module/org.junit.jupiter.params/module-info.java +++ b/junit-jupiter-params/src/module/org.junit.jupiter.params/module-info.java @@ -14,7 +14,7 @@ * @since 5.0 */ module org.junit.jupiter.params { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.jupiter.api; requires transitive org.junit.platform.commons; diff --git a/junit-platform-commons/src/module/org.junit.platform.commons/module-info.java b/junit-platform-commons/src/module/org.junit.platform.commons/module-info.java index c1bcc1b22550..f33ffd314feb 100644 --- a/junit-platform-commons/src/module/org.junit.platform.commons/module-info.java +++ b/junit-platform-commons/src/module/org.junit.platform.commons/module-info.java @@ -16,7 +16,7 @@ module org.junit.platform.commons { requires java.logging; requires java.management; // needed by RuntimeUtils to determine input arguments - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; exports org.junit.platform.commons; exports org.junit.platform.commons.annotation; diff --git a/junit-platform-console/src/module/org.junit.platform.console/module-info.java b/junit-platform-console/src/module/org.junit.platform.console/module-info.java index eddd184b22c3..08d28b434f50 100644 --- a/junit-platform-console/src/module/org.junit.platform.console/module-info.java +++ b/junit-platform-console/src/module/org.junit.platform.console/module-info.java @@ -15,7 +15,7 @@ * @provides java.util.spi.ToolProvider */ module org.junit.platform.console { - requires org.apiguardian.api; + requires static org.apiguardian.api; requires org.junit.platform.commons; requires org.junit.platform.engine; requires org.junit.platform.launcher; diff --git a/junit-platform-engine/src/module/org.junit.platform.engine/module-info.java b/junit-platform-engine/src/module/org.junit.platform.engine/module-info.java index 2f3f4528c0d0..0b6336c6becf 100644 --- a/junit-platform-engine/src/module/org.junit.platform.engine/module-info.java +++ b/junit-platform-engine/src/module/org.junit.platform.engine/module-info.java @@ -17,7 +17,7 @@ * @since 1.0 */ module org.junit.platform.engine { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.platform.commons; requires transitive org.opentest4j; diff --git a/junit-platform-jfr/src/module/org.junit.platform.jfr/module-info.java b/junit-platform-jfr/src/module/org.junit.platform.jfr/module-info.java index f79379168925..61aad3ec42a6 100644 --- a/junit-platform-jfr/src/module/org.junit.platform.jfr/module-info.java +++ b/junit-platform-jfr/src/module/org.junit.platform.jfr/module-info.java @@ -21,7 +21,7 @@ */ module org.junit.platform.jfr { requires jdk.jfr; - requires org.apiguardian.api; + requires static org.apiguardian.api; requires org.junit.platform.engine; requires org.junit.platform.launcher; diff --git a/junit-platform-launcher/src/module/org.junit.platform.launcher/module-info.java b/junit-platform-launcher/src/module/org.junit.platform.launcher/module-info.java index c282e53ff809..9501caff5a6a 100644 --- a/junit-platform-launcher/src/module/org.junit.platform.launcher/module-info.java +++ b/junit-platform-launcher/src/module/org.junit.platform.launcher/module-info.java @@ -21,7 +21,7 @@ */ module org.junit.platform.launcher { requires transitive java.logging; - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.platform.commons; requires transitive org.junit.platform.engine; diff --git a/junit-platform-reporting/src/module/org.junit.platform.reporting/module-info.java b/junit-platform-reporting/src/module/org.junit.platform.reporting/module-info.java index f452446933a1..b6240681922f 100644 --- a/junit-platform-reporting/src/module/org.junit.platform.reporting/module-info.java +++ b/junit-platform-reporting/src/module/org.junit.platform.reporting/module-info.java @@ -15,7 +15,7 @@ */ module org.junit.platform.reporting { requires java.xml; - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires org.junit.platform.commons; requires transitive org.junit.platform.engine; requires transitive org.junit.platform.launcher; diff --git a/junit-platform-runner/src/module/org.junit.platform.runner/module-info.java b/junit-platform-runner/src/module/org.junit.platform.runner/module-info.java index fcbf296ecc9b..47edeb10e7fd 100644 --- a/junit-platform-runner/src/module/org.junit.platform.runner/module-info.java +++ b/junit-platform-runner/src/module/org.junit.platform.runner/module-info.java @@ -16,7 +16,7 @@ */ module org.junit.platform.runner { requires transitive junit; // 4 - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.platform.launcher; requires transitive org.junit.platform.suite.api; requires org.junit.platform.suite.commons; diff --git a/junit-platform-suite-api/src/module/org.junit.platform.suite.api/module-info.java b/junit-platform-suite-api/src/module/org.junit.platform.suite.api/module-info.java index c65659ee0833..9af8daea9d71 100644 --- a/junit-platform-suite-api/src/module/org.junit.platform.suite.api/module-info.java +++ b/junit-platform-suite-api/src/module/org.junit.platform.suite.api/module-info.java @@ -14,7 +14,7 @@ * @since 1.0 */ module org.junit.platform.suite.api { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.junit.platform.commons; exports org.junit.platform.suite.api; diff --git a/junit-platform-suite-commons/src/module/org.junit.platform.suite.commons/module-info.java b/junit-platform-suite-commons/src/module/org.junit.platform.suite.commons/module-info.java index 9fc4a5293162..b810efc7f0ec 100644 --- a/junit-platform-suite-commons/src/module/org.junit.platform.suite.commons/module-info.java +++ b/junit-platform-suite-commons/src/module/org.junit.platform.suite.commons/module-info.java @@ -14,7 +14,7 @@ * @since 1.8 */ module org.junit.platform.suite.commons { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires org.junit.platform.suite.api; requires org.junit.platform.commons; requires org.junit.platform.engine; diff --git a/junit-platform-suite-engine/src/module/org.junit.platform.suite.engine/module-info.java b/junit-platform-suite-engine/src/module/org.junit.platform.suite.engine/module-info.java index a5c077e99461..f98845cb91ff 100644 --- a/junit-platform-suite-engine/src/module/org.junit.platform.suite.engine/module-info.java +++ b/junit-platform-suite-engine/src/module/org.junit.platform.suite.engine/module-info.java @@ -16,7 +16,7 @@ * @provides org.junit.platform.engine.TestEngine */ module org.junit.platform.suite.engine { - requires org.apiguardian.api; + requires static org.apiguardian.api; requires org.junit.platform.suite.api; requires org.junit.platform.suite.commons; requires org.junit.platform.commons; diff --git a/junit-platform-testkit/src/module/org.junit.platform.testkit/module-info.java b/junit-platform-testkit/src/module/org.junit.platform.testkit/module-info.java index ea99b0e8ff92..c0ae31818be7 100644 --- a/junit-platform-testkit/src/module/org.junit.platform.testkit/module-info.java +++ b/junit-platform-testkit/src/module/org.junit.platform.testkit/module-info.java @@ -15,7 +15,7 @@ * @uses org.junit.platform.engine.TestEngine */ module org.junit.platform.testkit { - requires transitive org.apiguardian.api; + requires static transitive org.apiguardian.api; requires transitive org.assertj.core; requires org.junit.platform.commons; requires transitive org.junit.platform.engine; diff --git a/junit-vintage-engine/src/module/org.junit.vintage.engine/module-info.java b/junit-vintage-engine/src/module/org.junit.vintage.engine/module-info.java index 0baad6dbff1e..17062be5d548 100644 --- a/junit-vintage-engine/src/module/org.junit.vintage.engine/module-info.java +++ b/junit-vintage-engine/src/module/org.junit.vintage.engine/module-info.java @@ -17,7 +17,7 @@ */ module org.junit.vintage.engine { requires junit; // 4 - requires org.apiguardian.api; + requires static org.apiguardian.api; requires org.junit.platform.engine; provides org.junit.platform.engine.TestEngine diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt index 03c16e3a7fb9..0b4810a6cc60 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-api.expected.txt @@ -6,7 +6,7 @@ exports org.junit.jupiter.api.function exports org.junit.jupiter.api.io exports org.junit.jupiter.api.parallel requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons transitive requires org.opentest4j transitive qualified opens org.junit.jupiter.api.condition to org.junit.platform.commons diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-engine.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-engine.expected.txt index d8cd4a2c24a5..5c637457863f 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-engine.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-engine.expected.txt @@ -1,6 +1,6 @@ org.junit.jupiter.engine@${jupiterVersion} jar:file:.+/junit-jupiter-engine-\d.+\.jar..module-info\.class requires java.base mandated -requires org.apiguardian.api +requires org.apiguardian.api static requires org.junit.jupiter.api requires org.junit.platform.commons requires org.junit.platform.engine diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-migrationsupport.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-migrationsupport.expected.txt index a96ffb5c0185..747125710426 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-migrationsupport.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-migrationsupport.expected.txt @@ -6,6 +6,6 @@ exports org.junit.jupiter.migrationsupport.rules.adapter exports org.junit.jupiter.migrationsupport.rules.member requires java.base mandated requires junit transitive -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.jupiter.api transitive requires org.junit.platform.commons diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-params.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-params.expected.txt index 341c529915dc..05e8b8ac4675 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-params.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-jupiter-params.expected.txt @@ -5,7 +5,7 @@ exports org.junit.jupiter.params.converter exports org.junit.jupiter.params.provider exports org.junit.jupiter.params.support requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.jupiter.api transitive requires org.junit.platform.commons transitive qualified opens org.junit.jupiter.params to org.junit.platform.commons diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-commons.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-commons.expected.txt index 12c846de99a2..5c0c9b44e4ef 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-commons.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-commons.expected.txt @@ -6,6 +6,6 @@ exports org.junit.platform.commons.support requires java.base mandated requires java.logging requires java.management -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive qualified exports org.junit.platform.commons.logging to org.junit.jupiter.api org.junit.jupiter.engine org.junit.jupiter.migrationsupport org.junit.jupiter.params org.junit.platform.console org.junit.platform.engine org.junit.platform.launcher org.junit.platform.reporting org.junit.platform.runner org.junit.platform.suite.api org.junit.platform.suite.engine org.junit.platform.testkit org.junit.vintage.engine qualified exports org.junit.platform.commons.util to org.junit.jupiter.api org.junit.jupiter.engine org.junit.jupiter.migrationsupport org.junit.jupiter.params org.junit.platform.console org.junit.platform.engine org.junit.platform.launcher org.junit.platform.reporting org.junit.platform.runner org.junit.platform.suite.api org.junit.platform.suite.commons org.junit.platform.suite.engine org.junit.platform.testkit org.junit.vintage.engine diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-console.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-console.expected.txt index 872aface24f4..4324e45eccfe 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-console.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-console.expected.txt @@ -1,6 +1,6 @@ org.junit.platform.console@${platformVersion} jar:file:.+/junit-platform-console-\d.+\.jar..module-info\.class requires java.base mandated -requires org.apiguardian.api +requires org.apiguardian.api static requires org.junit.platform.commons requires org.junit.platform.engine requires org.junit.platform.launcher diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-engine.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-engine.expected.txt index 1db8ec2099e2..d6f69626900a 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-engine.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-engine.expected.txt @@ -8,6 +8,6 @@ exports org.junit.platform.engine.support.discovery exports org.junit.platform.engine.support.filter exports org.junit.platform.engine.support.hierarchical requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons transitive requires org.opentest4j transitive diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-jfr.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-jfr.expected.txt index 688eb980e7d5..10bec3decdaf 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-jfr.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-jfr.expected.txt @@ -1,7 +1,7 @@ org.junit.platform.jfr@${platformVersion} jar:file:.+/junit-platform-jfr-\d.+\.jar..module-info\.class requires java.base mandated requires jdk.jfr -requires org.apiguardian.api +requires org.apiguardian.api static requires org.junit.platform.engine requires org.junit.platform.launcher provides org.junit.platform.launcher.LauncherDiscoveryListener with org.junit.platform.jfr.FlightRecordingDiscoveryListener diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt index d0f71d1b6631..1461169b0fee 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-launcher.expected.txt @@ -5,7 +5,7 @@ exports org.junit.platform.launcher.listeners exports org.junit.platform.launcher.listeners.discovery requires java.base mandated requires java.logging transitive -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons transitive requires org.junit.platform.engine transitive uses org.junit.platform.engine.TestEngine diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-reporting.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-reporting.expected.txt index 71c474d193ff..97d05754aa07 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-reporting.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-reporting.expected.txt @@ -3,7 +3,7 @@ exports org.junit.platform.reporting.legacy exports org.junit.platform.reporting.legacy.xml requires java.base mandated requires java.xml -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons requires org.junit.platform.engine transitive requires org.junit.platform.launcher transitive diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-runner.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-runner.expected.txt index a9da89b60b64..ee4ae1791204 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-runner.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-runner.expected.txt @@ -2,7 +2,7 @@ org.junit.platform.runner@${platformVersion} jar:file:.+/junit-platform-runner-\ exports org.junit.platform.runner requires java.base mandated requires junit transitive -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.launcher transitive requires org.junit.platform.suite.api transitive requires org.junit.platform.suite.commons diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-api.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-api.expected.txt index 3d1a3db0ea4d..5e3da71afa28 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-api.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-api.expected.txt @@ -1,5 +1,5 @@ org.junit.platform.suite.api@${platformVersion} jar:file:.+/junit-platform-suite-api-\d.+\.jar..module-info\.class exports org.junit.platform.suite.api requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons transitive diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-commons.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-commons.expected.txt index 5f099abb5ff3..493962b6b97d 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-commons.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-commons.expected.txt @@ -1,6 +1,6 @@ org.junit.platform.suite.commons@${platformVersion} jar:file:.+/junit-platform-suite-commons-\d.+\.jar..module-info\.class requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.junit.platform.commons requires org.junit.platform.engine requires org.junit.platform.launcher transitive diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-engine.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-engine.expected.txt index 5a1d3ef28734..4a5694586dd4 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-engine.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-suite-engine.expected.txt @@ -1,6 +1,6 @@ org.junit.platform.suite.engine@${platformVersion} jar:file:.+/junit-platform-suite-engine-\d.+\.jar..module-info\.class requires java.base mandated -requires org.apiguardian.api +requires org.apiguardian.api static requires org.junit.platform.commons requires org.junit.platform.engine requires org.junit.platform.launcher diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-testkit.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-testkit.expected.txt index 65fdb5f7accc..2ad3e8d1c77b 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-testkit.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-platform-testkit.expected.txt @@ -1,7 +1,7 @@ org.junit.platform.testkit@${platformVersion} jar:file:.+/junit-platform-testkit-\d.+\.jar..module-info\.class exports org.junit.platform.testkit.engine requires java.base mandated -requires org.apiguardian.api transitive +requires org.apiguardian.api static transitive requires org.assertj.core transitive requires org.junit.platform.commons requires org.junit.platform.engine transitive diff --git a/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt b/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt index d205b2aea88c..854b4981242a 100644 --- a/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt +++ b/platform-tooling-support-tests/projects/jar-describe-module/junit-vintage-engine.expected.txt @@ -1,7 +1,7 @@ org.junit.vintage.engine@${vintageVersion} jar:file:.+/junit-vintage-engine-\d.+\.jar..module-info\.class requires java.base mandated requires junit -requires org.apiguardian.api +requires org.apiguardian.api static requires org.junit.platform.engine provides org.junit.platform.engine.TestEngine with org.junit.vintage.engine.VintageTestEngine contains org.junit.vintage.engine