// Path: src/main/java/com/openmodloader/api/NestedSupplier.java
// @FunctionalInterface
// public interface NestedSupplier<T> {
//     Supplier<T> inner();
// 
//     default T get() {
//         return this.inner().get();
//     }
// }
// 
// Path: src/main/java/com/openmodloader/loader/OpenModLoader.java
// public final class OpenModLoader {
//     public static final Version VERSION = Version.valueOf("1.0.0");
// 
//     private static Logger LOGGER = LogManager.getFormatterLogger(OpenModLoader.class);
// 
//     private final ImmutableList<IModReporter> modReporters;
//     private final ImmutableMap<String, ILanguageAdapter> languageAdapters;
// 
//     private static OpenModLoader instance;
//     private static IGameContext context;
// 
//     private IEventDispatcher eventDispatcher = VoidEventDispatcher.INSTANCE;
// 
//     private ModContext installedModContext;
//     private ModContext modContext;
// 
//     OpenModLoader(ImmutableList<IModReporter> modReporters, ImmutableMap<String, ILanguageAdapter> languageAdapters) {
//         this.modReporters = modReporters;
//         this.languageAdapters = languageAdapters;
//     }
// 
//     public static void offerContext(IGameContext context) {
//         if (OpenModLoader.context != null) {
//             throw new IllegalStateException("OmlContext has already been initialized");
//         }
//         OpenModLoader.context = context;
//     }
// 
//     public static void offerInstance(OpenModLoader instance) {
//         if (OpenModLoader.instance != null) {
//             throw new IllegalStateException("OpenModLoader has already been initialized!");
//         }
//         OpenModLoader.instance = instance;
//     }
// 
//     public static OpenModLoader get() {
//         if (instance == null) {
//             throw new IllegalStateException("OpenModLoader not yet initialized!");
//         }
//         return instance;
//     }
// 
//     public static IGameContext getContext() {
//         return context;
//     }
// 
//     public IEventDispatcher getEventDispatcher() {
//         return eventDispatcher;
//     }
// 
//     @Nullable
//     public ModContext getInstalledModContext() {
//         return installedModContext;
//     }
// 
//     @Nullable
//     public ModContext getModContext() {
//         return modContext;
//     }
// 
//     public void initialize() {
//         offerInstance(this);
// 
//         Collection<ModCandidate> installedCandidates = collectModCandidates();
//         LOGGER.info("Collected {} mod candidates", installedCandidates.size());
// 
//         List<Mod> installedMods = installedCandidates.stream()
//                 .map(ModCandidate::construct)
//                 .collect(Collectors.toList());
// 
//         List<Mod> globalMods = installedMods.stream()
//                 .filter(Mod::isGlobal)
//                 .collect(Collectors.toList());
// 
//         installedModContext = new ModContext(installedMods);
//         modContext = new ModContext(globalMods);
// 
//         eventDispatcher = modContext.buildEventDispatcher();
// 
//         for (Registry<?> registry : Registry.REGISTRIES) {
//             if (registry instanceof IdRegistry) {
//                 initializeRegistry((IdRegistry<?>) registry);
//             }
//         }
//     }
// 
//     private Collection<ModCandidate> collectModCandidates() {
//         ModReportCollector reportCollector = new ModReportCollector();
//         ModConstructor constructor = new ModConstructor(this.languageAdapters);
// 
//         for (IModReporter reporter : modReporters) {
//             reporter.apply(reportCollector, constructor);
//         }
// 
//         return reportCollector.getCandidates();
//     }
// 
//     private <T> void initializeRegistry(IdRegistry<T> registry) {
//         for (IRegistrationConfig config : installedModContext.getRegistrationConfigs()) {
//             config.registerEntries(registry);
//         }
//     }
// }
// 
// Path: src/main/java/net/fabricmc/api/Side.java
// public enum Side {
// 
// 	CLIENT,
// 	SERVER,
// 	UNIVERSAL;
// 
// 	public boolean hasClient() {
// 		return this != SERVER;
// 	}
// 
// 	public boolean hasServer() {
// 		return this != CLIENT;
// 	}
// 
// 	public boolean isClient() {
// 		return this == CLIENT;
// 	}
// 
// 	public boolean isServer() {
// 		return this == SERVER;
// 	}
// 
// }


import com.openmodloader.api.NestedSupplier;
import com.openmodloader.loader.OpenModLoader;
import net.fabricmc.api.Side;
package com.openmodloader.api.mod.config;


public class SidedModConfigurator implements IModConfigurator {
    private NestedSupplier<IModConfigurator> common;
    private NestedSupplier<IModConfigurator> physicalServer;
    private NestedSupplier<IModConfigurator> physicalClient;

    public SidedModConfigurator common(NestedSupplier<IModConfigurator> supplier) {
        this.common = supplier;
// Path: src/main/java/com/openmodloader/api/NestedSupplier.java
// @FunctionalInterface
// public interface NestedSupplier<T> {
//     Supplier<T> inner();
// 
//     default T get() {
//         return this.inner().get();
//     }
// }
// 
// Path: src/main/java/com/openmodloader/loader/OpenModLoader.java
// public final class OpenModLoader {
//     public static final Version VERSION = Version.valueOf("1.0.0");
// 
//     private static Logger LOGGER = LogManager.getFormatterLogger(OpenModLoader.class);
// 
//     private final ImmutableList<IModReporter> modReporters;
//     private final ImmutableMap<String, ILanguageAdapter> languageAdapters;
// 
//     private static OpenModLoader instance;
//     private static IGameContext context;
// 
//     private IEventDispatcher eventDispatcher = VoidEventDispatcher.INSTANCE;
// 
//     private ModContext installedModContext;
//     private ModContext modContext;
// 
//     OpenModLoader(ImmutableList<IModReporter> modReporters, ImmutableMap<String, ILanguageAdapter> languageAdapters) {
//         this.modReporters = modReporters;
//         this.languageAdapters = languageAdapters;
//     }
// 
//     public static void offerContext(IGameContext context) {
//         if (OpenModLoader.context != null) {
//             throw new IllegalStateException("OmlContext has already been initialized");
//         }
//         OpenModLoader.context = context;
//     }
// 
//     public static void offerInstance(OpenModLoader instance) {
//         if (OpenModLoader.instance != null) {
//             throw new IllegalStateException("OpenModLoader has already been initialized!");
//         }
//         OpenModLoader.instance = instance;
//     }
// 
//     public static OpenModLoader get() {
//         if (instance == null) {
//             throw new IllegalStateException("OpenModLoader not yet initialized!");
//         }
//         return instance;
//     }
// 
//     public static IGameContext getContext() {
//         return context;
//     }
// 
//     public IEventDispatcher getEventDispatcher() {
//         return eventDispatcher;
//     }
// 
//     @Nullable
//     public ModContext getInstalledModContext() {
//         return installedModContext;
//     }
// 
//     @Nullable
//     public ModContext getModContext() {
//         return modContext;
//     }
// 
//     public void initialize() {
//         offerInstance(this);
// 
//         Collection<ModCandidate> installedCandidates = collectModCandidates();
//         LOGGER.info("Collected {} mod candidates", installedCandidates.size());
// 
//         List<Mod> installedMods = installedCandidates.stream()
//                 .map(ModCandidate::construct)
//                 .collect(Collectors.toList());
// 
//         List<Mod> globalMods = installedMods.stream()
//                 .filter(Mod::isGlobal)
//                 .collect(Collectors.toList());
// 
//         installedModContext = new ModContext(installedMods);
//         modContext = new ModContext(globalMods);
// 
//         eventDispatcher = modContext.buildEventDispatcher();
// 
//         for (Registry<?> registry : Registry.REGISTRIES) {
//             if (registry instanceof IdRegistry) {
//                 initializeRegistry((IdRegistry<?>) registry);
//             }
//         }
//     }
// 
//     private Collection<ModCandidate> collectModCandidates() {
//         ModReportCollector reportCollector = new ModReportCollector();
//         ModConstructor constructor = new ModConstructor(this.languageAdapters);
// 
//         for (IModReporter reporter : modReporters) {
//             reporter.apply(reportCollector, constructor);
//         }
// 
//         return reportCollector.getCandidates();
//     }
// 
//     private <T> void initializeRegistry(IdRegistry<T> registry) {
//         for (IRegistrationConfig config : installedModContext.getRegistrationConfigs()) {
//             config.registerEntries(registry);
//         }
//     }
// }
// 
// Path: src/main/java/net/fabricmc/api/Side.java
// public enum Side {
// 
// 	CLIENT,
// 	SERVER,
// 	UNIVERSAL;
// 
// 	public boolean hasClient() {
// 		return this != SERVER;
// 	}
// 
// 	public boolean hasServer() {
// 		return this != CLIENT;
// 	}
// 
// 	public boolean isClient() {
// 		return this == CLIENT;
// 	}
// 
// 	public boolean isServer() {
// 		return this == SERVER;
// 	}
// 
// }


// Path: src/main/java/com/openmodloader/api/mod/config/SidedModConfigurator.java
import com.openmodloader.api.NestedSupplier;
import com.openmodloader.loader.OpenModLoader;
import net.fabricmc.api.Side;

package com.openmodloader.api.mod.config;


public class SidedModConfigurator implements IModConfigurator {
    private NestedSupplier<IModConfigurator> common;
    private NestedSupplier<IModConfigurator> physicalServer;
    private NestedSupplier<IModConfigurator> physicalClient;

    public SidedModConfigurator common(NestedSupplier<IModConfigurator> supplier) {
        this.common = supplier;
        return this;