Adding multiple modules at the Gateway scope

I am attempting to get into module development. For now I am just trying to add a scripting library to interface with an external API I have. I want to add layers to the scripting library so for example:
system.example.assets and system.example.oee
where each of these has it's own functions underneath them. I can get it to work at the client and designer scope, but I cannot get it to do it at the gateway scope as well. It seems to be an issue with the getRPCHandler method. I have looked at other articles on here regarding it and cannot seem to get a handle on how to add multiple script modules.

Here is what I have tried inside of the GatewayHook.java from the scripting-function example in the Inductive Git Repo

    @Override
    public void initializeScriptManager(ScriptManager manager) {
        super.initializeScriptManager(manager);

        manager.addScriptModule(
                "system.example.assets",
                assetModule,
                new PropertiesFileDocProvider());
        manager.addScriptModule(
                "system.example.oee",
                oeeModule,
                new PropertiesFileDocProvider());
    }

    @Override
    public Object getRPCHandler(ClientReqSession session, String projectName) {
        return assetModule;
    }

If I switch it to the oeeModule as the return it will allow me to call the functions under that but not assetsModule and vice versa. I have the manager.addScriptModule code almost identical in the ClientHook.java and DesignerHook.java files and it works great when I call it from a binding or expression.

So what am I doing wrong here?

Your script module code looks fine; e.g. for comparison:

    @Override
    public void initializeScriptManager(ScriptManager manager) {
        PropertiesFileDocProvider docProvider = new PropertiesFileDocProvider();
        manager.addScriptModule("system.perspective", scriptFunctions, docProvider);
        manager.addScriptModule("system.perspective.workstation", workstationScriptingFunctions, docProvider);
    }

What makes you suspect the RPC handler/what actually isn't working? Does autocomplete in the gateway scope show you both 'sub' scopes?

Both of them show up in the script console intellisense, but only the one that is placed as the return in getRPCHandler actually is callable from the script console. when calling the other it throws a java.lang.reflect.UndeclaredThrowableException where it tries to call the Impl method of the GatewayScriptModule.java file.

If I call either function in a binding or with runscript in an expression they both work perfectly