+ return normalizePackageName(builder.toString());
+ }
+
+ /**
+ * Convert the result of {@link #getRootPackageName(QNameModule)} to the corresponding result of
+ * {@link #getServicePackageName(QNameModule)}.
+ *
+ * @param rootPackageName root package name
+ * @return Service root package name
+ */
+ public static @NonNull String rootToServicePackageName(final String rootPackageName) {
+ final var match = ROOT_PACKAGE_PATTERN.matcher(rootPackageName);
+ checkArgument(match.find(), "Package name '%s' does not match required pattern '%s'", rootPackageName,
+ ROOT_PACKAGE_PATTERN_STRING);
+ return getModelRootPackageName(rootPackageName.replace(Naming.PACKAGE_PREFIX, Naming.SVC_PACKAGE_PREFIX));