code: function dispose (moduleNames, callback) {
                  var nameOrArr, cb;
  
                  if (typeof moduleNames === 'function') {
                      logger.debug('Disposing all modules on scope, ' + self.name);
                      nameOrArr = null;
                      cb = moduleNames;
                  } else {
                      logger.debug({
                          message: 'Disposing module(s) on scope, ' + self.name,
                          moduleNames: moduleNames
                      });
                      nameOrArr = moduleNames;
                      cb = callback;
                  }
  
  
                  return optionalAsync(function () {
                      var results;
  
                      if (is.array(nameOrArr)) {
                          results = context.container.dispose(nameOrArr).disposed.concat(
                              context.singletonContainer.dispose(nameOrArr).disposed
                          );
  
                          return {
                              result: results.length === nameOrArr.length,
                              disposed: results
                          };
                      }
  
                      return context.container.dispose(nameOrArr) ||
                          context.singletonContainer.dispose(nameOrArr);
                  }, new Error(), cb);
              }
docs: /*
  Disposes a module, or all modules. When a moduleName is not passed
  as an argument, the entire container is disposed.
  @param moduleNames (string): The name of the module to dispose
  @returns boolean: true if the object(s) were disposed, otherwise false