static AtkObject* accessibilityRootObjectWrapper(AtkObject* atkObject)
{
    if (!AXObjectCache::accessibilityEnabled())
        AXObjectCache::enableAccessibility();

    WebPageAccessibilityObject* accessible = WEB_PAGE_ACCESSIBILITY_OBJECT(atkObject);
    if (!accessible->m_page)
        return 0;

    Page* corePage = accessible->m_page->corePage();
    if (!corePage)
        return 0;

    Frame& coreFrame = corePage->mainFrame();
    if (!coreFrame.document())
        return 0;

    AXObjectCache* cache = coreFrame.document()->axObjectCache();
    if (!cache)
        return nullptr;

    AccessibilityObject* coreRootObject = cache->rootObject();
    if (!coreRootObject)
        return 0;

    AtkObject* rootObject = coreRootObject->wrapper();
    if (!rootObject || !ATK_IS_OBJECT(rootObject))
        return 0;

    return rootObject;
}