@@ -1627,11 +1627,11 @@ interface ModuleDefinition<S> extends Builder<S> {
16271627
16281628 ModuleDefinition <S > requires (Collection <String > modules );
16291629
1630- ModuleDefinition <S > require (String module , ModifierContributor .ForModule .OfRequire ... modifierContributor );
1630+ RequiresDefinition <S > require (String module , ModifierContributor .ForModule .OfRequire ... modifierContributor );
16311631
1632- ModuleDefinition <S > require (String module , Collection <? extends ModifierContributor .ForModule .OfRequire > modifierContributors );
1632+ RequiresDefinition <S > require (String module , Collection <? extends ModifierContributor .ForModule .OfRequire > modifierContributors );
16331633
1634- ModuleDefinition <S > require (String module , int modifiers );
1634+ RequiresDefinition <S > require (String module , int modifiers );
16351635
16361636 ModuleDefinition <S > exports (String ... aPackage );
16371637
@@ -1673,18 +1673,62 @@ interface ModuleDefinition<S> extends Builder<S> {
16731673
16741674 ModuleDefinition <S > provides (String service , Collection <String > implementations );
16751675
1676- interface ExportsDefinition < S > extends ModuleDefinition <S > {
1676+ interface RequiresDefinition < U > extends ModuleDefinition <U > {
16771677
1678- ModuleDefinition < S > to ( String ... module );
1678+ RequiresDefinition < U > version ( @ MaybeNull String version );
16791679
1680- ModuleDefinition <S > to (Collection <String > modules );
1680+ /**
1681+ * An abstract base implementation of a {@link RequiresDefinition}.
1682+ *
1683+ * @param <V> A loaded type that the built type is guaranteed to be a subclass of.
1684+ */
1685+ abstract class AbstractBase <V > extends ModuleDefinition .AbstractBase <V > implements RequiresDefinition <V > {
1686+ /* empty */
1687+ }
1688+ }
1689+
1690+ interface ExportsDefinition <U > extends ModuleDefinition <U > {
1691+
1692+ ExportsDefinition <U > to (String ... module );
1693+
1694+ ExportsDefinition <U > to (Collection <String > modules );
1695+
1696+ /**
1697+ * An abstract base implementation of a {@link OpensDefinition}.
1698+ *
1699+ * @param <V> A loaded type that the built type is guaranteed to be a subclass of.
1700+ */
1701+ abstract class AbstractBase <V > extends ModuleDefinition .AbstractBase <V > implements ExportsDefinition <V > {
1702+
1703+ /**
1704+ * {@inheritDoc}ModuleDefinition
1705+ */
1706+ public ExportsDefinition <V > to (String ... module ) {
1707+ return to (Arrays .asList (module ));
1708+ }
1709+ }
16811710 }
16821711
16831712 interface OpensDefinition <S > extends ModuleDefinition <S > {
16841713
1685- ModuleDefinition <S > to (String ... module );
1714+ OpensDefinition <S > to (String ... module );
16861715
1687- ModuleDefinition <S > to (Collection <String > modules );
1716+ OpensDefinition <S > to (Collection <String > modules );
1717+
1718+ /**
1719+ * An abstract base implementation of a {@link OpensDefinition}.
1720+ *
1721+ * @param <V> A loaded type that the built type is guaranteed to be a subclass of.
1722+ */
1723+ abstract class AbstractBase <V > extends ModuleDefinition .AbstractBase <V > implements OpensDefinition <V > {
1724+
1725+ /**
1726+ * {@inheritDoc}
1727+ */
1728+ public OpensDefinition <V > to (String ... module ) {
1729+ return to (Arrays .asList (module ));
1730+ }
1731+ }
16881732 }
16891733
16901734 /**
@@ -1739,14 +1783,14 @@ public ModuleDefinition<U> requires(Collection<String> modules) {
17391783 /**
17401784 * {@inheritDoc}
17411785 */
1742- public ModuleDefinition <U > require (String module , ModifierContributor .ForModule .OfRequire ... modifierContributor ) {
1786+ public RequiresDefinition <U > require (String module , ModifierContributor .ForModule .OfRequire ... modifierContributor ) {
17431787 return require (module , Arrays .asList (modifierContributor ));
17441788 }
17451789
17461790 /**
17471791 * {@inheritDoc}
17481792 */
1749- public ModuleDefinition <U > require (String module , Collection <? extends ModifierContributor .ForModule .OfRequire > modifierContributors ) {
1793+ public RequiresDefinition <U > require (String module , Collection <? extends ModifierContributor .ForModule .OfRequire > modifierContributors ) {
17501794 return require (module , ModifierContributor .Resolver .of (modifierContributors ).resolve ());
17511795 }
17521796
@@ -5316,7 +5360,7 @@ public ModuleDefinition<U> packages(Collection<String> packages) {
53165360 /**
53175361 * {@inheritDoc}
53185362 */
5319- public ModuleDefinition <U > require (String module , int modifiers ) {
5363+ public RequiresDefinition <U > require (String module , int modifiers ) {
53205364 return null ;
53215365 }
53225366
0 commit comments