// Path: modularity-demo/provider/src/provider/impl/HelloWorldMessageProvider.java
// public class HelloWorldMessageProvider implements MessageProvider {
//     @Override
//     public String getMessage() {
//         return "Hello Java 9 Modularity!!!";
//     }
// }
// 
// Path: modularity-demo/renderer/src/renderer/impl/StandardOutMessageRenderer.java
// public class StandardOutMessageRenderer implements MessageRenderer {
//     private MessageProvider provider;
// 
//     @Override
//     public void render() {
//         if (provider == null) {
//             throw new RuntimeException(
//                     "You must set the property messageProvider of class:"
//                             + StandardOutMessageRenderer.class.getName());
//         }
//         System.out.println(provider.getMessage());
//     }
// 
//     @Override
//     public void setMessageProvider(MessageProvider provider) {
//         this.provider = provider;
//     }
// 
//     @Override
//     public MessageProvider getMessageProvider() {
//         return provider;
//     }
// }


import provider.impl.HelloWorldMessageProvider;
import renderer.impl.StandardOutMessageRenderer;

package client;


public class HelloModularityClient {

    public static void main(String[] args) {

// Path: modularity-demo/provider/src/provider/impl/HelloWorldMessageProvider.java
// public class HelloWorldMessageProvider implements MessageProvider {
//     @Override
//     public String getMessage() {
//         return "Hello Java 9 Modularity!!!";
//     }
// }
// 
// Path: modularity-demo/renderer/src/renderer/impl/StandardOutMessageRenderer.java
// public class StandardOutMessageRenderer implements MessageRenderer {
//     private MessageProvider provider;
// 
//     @Override
//     public void render() {
//         if (provider == null) {
//             throw new RuntimeException(
//                     "You must set the property messageProvider of class:"
//                             + StandardOutMessageRenderer.class.getName());
//         }
//         System.out.println(provider.getMessage());
//     }
// 
//     @Override
//     public void setMessageProvider(MessageProvider provider) {
//         this.provider = provider;
//     }
// 
//     @Override
//     public MessageProvider getMessageProvider() {
//         return provider;
//     }
// }


// Path: modularity-demo-intellij/client/src/client/HelloModularityClient.java
import provider.impl.HelloWorldMessageProvider;
import renderer.impl.StandardOutMessageRenderer;

package client;


public class HelloModularityClient {

    public static void main(String[] args) {

        HelloWorldMessageProvider provider = new HelloWorldMessageProvider();
