¿Cómo resolver la dependencia circular en Require.js?

Básicamente, la idea es que el "sub" módulo crea un objeto, y ese objeto debe ser parte de una biblioteca de utilidades que es el módulo "principal". Sin embargo, el objeto "sub"depende en utilidades desde "main":

// Main module
define(['sub'], function(sub) {
    var utils = {
        utilityMain: function () {
           // ...
        };
        // ...
    };

    tools.subModule = sub;

    return tools;
});

// Sub module
define(['main'], function(main) {
    return new (function () {

        // Singleton object using functions in main module
        var somestuff = function () {
            main.utilityMain();
            // etc
        };
    })();
});   

¿Cómo puedo lograr esto con require.js sin crear un agujero negro que se tragaría todo el planeta?

Muchas gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta