// Path: src/main/java/com/fatico/winthing/messaging/MessagingModule.java
// public class MessagingModule extends PrivateModule {
// 
//     @Override
//     protected void configure() {
//         bind(MqttClientPersistence.class).to(MemoryPersistence.class).in(Singleton.class);
// 
//         bind(Registry.class).to(SimpleRegistry.class).in(Singleton.class);
// 
//         bind(Engine.class).in(Singleton.class);
//         bind(MessagePublisher.class).to(Engine.class);
// 
//         expose(Registry.class);
//         expose(MessagePublisher.class);
//         expose(Engine.class);
//     }
// 
// }
// 
// Path: src/main/java/com/fatico/winthing/windows/WindowsModule.java
// public class WindowsModule extends PrivateModule {
// 
//     @Override
//     protected void configure() {
//         bind(User32.class).toInstance(User32.INSTANCE);
//         expose(User32.class);
// 
//         bind(Kernel32.class).toInstance(Kernel32.INSTANCE);
//         expose(Kernel32.class);
// 
//         bind(Advapi32.class).toInstance(Advapi32.INSTANCE);
//         expose(Advapi32.class);
// 
//         bind(Shell32.class).toInstance(Shell32.INSTANCE);
//         expose(Shell32.class);
//     }
// 
// }


import com.fatico.winthing.messaging.MessagingModule;
import com.fatico.winthing.windows.WindowsModule;
import com.google.gson.Gson;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigParseOptions;
import com.typesafe.config.ConfigSyntax;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.util.Locale;
package com.fatico.winthing;


public class ApplicationModule extends AbstractModule {
    public static final String ConfigFile = "winthing.conf";

    @Override
    protected void configure() {
        bind(Gson.class).in(Singleton.class);

        install(new MessagingModule());
        if (System.getProperty("os.name").toLowerCase(Locale.getDefault()).contains("win")) {
            install(new WindowsModule());
            install(new com.fatico.winthing.systems.system.Module());
// Path: src/main/java/com/fatico/winthing/messaging/MessagingModule.java
// public class MessagingModule extends PrivateModule {
// 
//     @Override
//     protected void configure() {
//         bind(MqttClientPersistence.class).to(MemoryPersistence.class).in(Singleton.class);
// 
//         bind(Registry.class).to(SimpleRegistry.class).in(Singleton.class);
// 
//         bind(Engine.class).in(Singleton.class);
//         bind(MessagePublisher.class).to(Engine.class);
// 
//         expose(Registry.class);
//         expose(MessagePublisher.class);
//         expose(Engine.class);
//     }
// 
// }
// 
// Path: src/main/java/com/fatico/winthing/windows/WindowsModule.java
// public class WindowsModule extends PrivateModule {
// 
//     @Override
//     protected void configure() {
//         bind(User32.class).toInstance(User32.INSTANCE);
//         expose(User32.class);
// 
//         bind(Kernel32.class).toInstance(Kernel32.INSTANCE);
//         expose(Kernel32.class);
// 
//         bind(Advapi32.class).toInstance(Advapi32.INSTANCE);
//         expose(Advapi32.class);
// 
//         bind(Shell32.class).toInstance(Shell32.INSTANCE);
//         expose(Shell32.class);
//     }
// 
// }


// Path: src/main/java/com/fatico/winthing/ApplicationModule.java
import com.fatico.winthing.messaging.MessagingModule;
import com.fatico.winthing.windows.WindowsModule;
import com.google.gson.Gson;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigParseOptions;
import com.typesafe.config.ConfigSyntax;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.util.Locale;

package com.fatico.winthing;


public class ApplicationModule extends AbstractModule {
    public static final String ConfigFile = "winthing.conf";

    @Override
    protected void configure() {
        bind(Gson.class).in(Singleton.class);

        install(new MessagingModule());
        if (System.getProperty("os.name").toLowerCase(Locale.getDefault()).contains("win")) {
            install(new WindowsModule());
            install(new com.fatico.winthing.systems.system.Module());
            install(new com.fatico.winthing.systems.keyboard.Module());