JS2Object::addRoot(&metadata);
RootKeeper rk(&metadata);
int main(int argc, char **argv){    using namespace JavaScript;    using namespace Shell;    #if defined(XP_MAC) && !defined(XP_MAC_MPW)    initConsole("\pJavaScript Shell", "Welcome to Epimetheus.\n", argc, argv);#else    stdOut << "Welcome to Epimetheus.\n";#endif	JS2Object::addRoot(&metadata);    metadata = new MetaData::JS2Metadata(world);    metadata->addGlobalObjectFunction("print", print, 1);    metadata->addGlobalObjectFunction("load", load, 1);#ifdef DEBUG    metadata->addGlobalObjectFunction("dump", dump, 1);    metadata->addGlobalObjectFunction("dumpAt", dumpAt, 1);    metadata->addGlobalObjectFunction("trees", trees, 0);    metadata->addGlobalObjectFunction("trace", trace, 0);#endif    try {        bool doInteractive = true;        int result = 0;        if (argc > 1) {            doInteractive = processArgs(argc - 1, argv + 1, &result, &metadata->showTrees, &metadata->engine->traceInstructions);        }        if (doInteractive)            result = readEvalPrint(stdin);        return result;    }    catch (Exception &e) {        stdOut << '\n' << e.fullMessage();        return EXITCODE_RUNTIME_ERROR;    }}