import com.github.sormuras.bach.Bach;
import com.github.sormuras.bach.external.FXGL;
import com.github.sormuras.bach.external.GluonAttach;
import com.github.sormuras.bach.external.JUnit;
import com.github.sormuras.bach.external.Jackson;
import com.github.sormuras.bach.external.JavaFX;
import com.github.sormuras.bach.external.Kotlin;

class external {
  public static void main(String... args) {
    var bach = new Bach(args);
    var grabber =
        bach.grabber(
            FXGL.version("11.17"),
            GluonAttach.version("4.0.12"),
            Jackson.version("2.13.0-rc1"),
            JavaFX.version("18-ea+1"),
            JUnit.version("5.8.0-RC1"),
            Kotlin.version("1.5.30-RC"));

    bach.logCaption("Grab external modules");
    grabber.grabExternalModules("com.almasb.fxgl.all");
    grabber.grabExternalModules("org.junit.jupiter", "org.junit.platform.console");

    bach.logCaption("Grab missing external modules");
    grabber.grabMissingExternalModules();
  }
}

@@ -477,73 +477,316 @@
     
-FXGL.version(%2211.17%22),%0A            GluonAttach.version(%224.0.12%22),
+// https://repo.maven.apache.org/maven2/com/github/almasb/fxgl/%0A            FXGL.version(%2211.17%22),%0A            // https://repo.maven.apache.org/maven2/com/gluonhq/attach/util/%0A            GluonAttach.version(%224.0.12%22),%0A            // https://repo.maven.apache.org/maven2/com/fasterxml/jackson/jackson-parent/
 %0A   
@@ -820,21 +820,93 @@
 .13.0-rc
-1
+2
 %22),%0A
+            // https://repo.maven.apache.org/maven2/org/openjfx/javafx/%0A
         
@@ -931,21 +931,94 @@
 (%2218-ea+
-1
+2
 %22),%0A
+            // https://repo.maven.apache.org/maven2/org/junit/junit-bom/%0A
         
@@ -1045,16 +1045,97 @@
 .8.0
--RC1
 %22),%0A
+            // https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-bom/%0A
     
@@ -1168,11 +1168,8 @@
 5.30
--RC
 %22));

Upgrade various versions and link to with version-lookup URIs