nsDOMAttribute::Initialize();
Initialize(nsIModule* aSelf){  NS_PRECONDITION(!gInitialized, "module already initialized");  if (gInitialized) {    return NS_OK;  }  gInitialized = PR_TRUE;  nsJSEnvironment::Startup();  nsresult rv = nsContentUtils::Init();  if (NS_FAILED(rv)) {    NS_ERROR("Could not initialize nsContentUtils");    Shutdown();    return rv;  }  rv = nsAttrValue::Init();  if (NS_FAILED(rv)) {    NS_ERROR("Could not initialize nsAttrValue");    Shutdown();    return rv;  }  // Register all of our atoms once  nsCSSAnonBoxes::AddRefAtoms();  nsCSSPseudoClasses::AddRefAtoms();  nsCSSPseudoElements::AddRefAtoms();  nsCSSKeywords::AddRefTable();  nsCSSProps::AddRefTable();  nsColorNames::AddRefTable();  nsHTMLAtoms::AddRefAtoms();  nsXBLAtoms::AddRefAtoms();  nsLayoutAtoms::AddRefAtoms();  nsXULAtoms::AddRefAtoms();#ifdef MOZ_XUL  rv = nsXULContentUtils::Init();  if (NS_FAILED(rv)) {    NS_ERROR("Could not initialize nsXULContentUtils");    Shutdown();    return rv;  }#endif#ifdef MOZ_MATHML  nsMathMLOperators::AddRefTable();  nsMathMLAtoms::AddRefAtoms();#endif#ifdef MOZ_SVG  if (SVGEnabled())    nsContentDLF::RegisterSVG();  nsSVGAtoms::AddRefAtoms();#ifdef MOZ_SVG_RENDERER_LIBART  NS_InitSVGRendererLibartGlobals();#endif#ifdef MOZ_SVG_RENDERER_GDIPLUS  NS_InitSVGRendererGDIPlusGlobals();#endif#endif#ifdef DEBUG  nsFrame::DisplayReflowStartup();#endif  rv = nsTextTransformer::Initialize();  if (NS_FAILED(rv)) {    NS_ERROR("Could not initialize nsTextTransformer");    Shutdown();    return rv;  }  // Add our shutdown observer.  nsCOMPtr<nsIObserverService> observerService =    do_GetService("@mozilla.org/observer-service;1");  if (observerService) {    LayoutShutdownObserver* observer =      new LayoutShutdownObserver();    if (!observer) {      Shutdown();      return NS_ERROR_OUT_OF_MEMORY;    }    observerService->AddObserver(observer, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_FALSE);  } else {    NS_WARNING("Could not get an observer service.  We will leak on shutdown.");  }  return NS_OK;}