rem: module = new Module; error = module->Load(path); if (error == B_OK && !fModules.AddModule(module)) error = B_NO_MEMORY; if (error != B_OK) { delete module; module = NULL;
add: ModuleAddOn *addon = NULL; error = _GetAddOn(path, &addon); if (error == B_OK) {  if (module_info *info = addon->FindModuleInfo(path)) { module = new Module(addon, info); fModules.AddModule(module); } else { _PutAddOn(addon); error = B_ENTRY_NOT_FOUND; }
context: ModuleManager::GetModule(const char *path, module_info **infop){	status_t error = (path && infop ? B_OK : B_BAD_VALUE);	if (error == B_OK) {		BAutolock _lock(fModules);		Module *module = fModules.FindModule(path);		if (!module) {			// module not yet loaded, try to get it			module = new Module;			error = module->Load(path);			if (error == B_OK && !fModules.AddModule(module))				error = B_NO_MEMORY;			if (error != B_OK) {				delete module;				module = NULL;			}		}		// "get" the module		if (error == B_OK) {			module->Get();			*infop = module->Info();		}	}	return error;}